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.
This was me deliberately avoiding not wanting to expose internal edge-case handling to external users - that said it wouldn't make a huge difference so I'll change it - thanks :)