After playing a bit with the profiler and if I read it correctly this appears to have to do with [...] hopefully the results will be worth it.
What does that mean? Why don't you
measure with the profiler instead of playing around, guessing and hoping? You won't solve your problem by trying random things, you need a systematic approach.
I highly doubt that
typeid is the performance bottleneck, especially if there are still only a few calls per second.
This should require more work for the user (will have to provide registration/unregistration functions)
That's a bad idea. Unless you can
prove that this brings a real advantage, don't make the API inconvenient.