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 is interesting - originally I'd called it 'thread_safe' but after checking google to make sure there wasn't an in-built decorator I could use I found that synchronise was the most widely used term...  I guess being that it's using thread synchronisation objects to synchronise across threads.  To me 'exclusive' is just as obscure so maybe 'thread_safe' would do?