How to use different entity info per entity bundle?
I don't really understand what you are asking, but it's not possibly to have different entity type definitions per bundle. The only exeption is the uri callback, that forum.module is using, as you mentioned yourself.

As I said, I don't understand/you don't explain what you're actually trying to achieve. Try to explain that, maybe there's a way to achieve your goal, just not in the way you imagined it.