For #27328 - Fix for subclassing hooks

- Previously, sub-classing hooks would only work if the name of the derived class was alphabetically after the name of the base class.
- Derived hook classes tend to be named the same as the base class which meant that the behaviour was indeterminate.
Previously the last one was returned, and here we are returning the first one. Any reason why the behaviour is changed ? Any side effect in production which could happen when switching to this version of the core ?