https://en.bitcoin.it/wiki/User:Justmoon/BIP_Draft:_Custom_Service_Discovery
If that was included, there wouldn't need to be quite the same level of "hoarding" of the services bits.
According to the protocol.h file:
// isn't getting used, or one not being used much, and notify the
// bitcoin-development mailing list. Remember that service bits are just
// unauthenticated advertisements, so your code must be robust against
// collisions and other cases where nodes may be advertising a service they
// do not actually support. Other service bits should be allocated via the
// BIP process.
You could pick random bits from 24-41.
If you want "official" recognition, then you could submit a BIP. The reference implementation would be pretty easy, since it would support all the packets.
An alternative would be for a new message that lists the supported messages. It wouldn't be quite as good. Peers would have to connect, ask for the packet, and then disconnect if they don't have it.