Ref T8637. The "load concrete subclasses" pattern has enjoyed wide success, but we're starting to collect a lot of instances of "loop over this list of things and make sure they all really have unique keys".
We can better support this, caching, subclass expansion, and sorting in a thin layer on top of PhutilSymbolLoader.