I briefly looked into this at some point. My rough idea was to remove the need for subclasses to override the data providers, and instead provide better ways to achieve the desired behaviour: all existing overrides are for provideHookHandlerNames to skip hooks from other extensions. There could be a separate static getter to provide those.
US