Maybe you could create multiple server invocation handlers, each serving a different "sub-system" (which can correspond to an event). The Client which does the addListener can then connect/listen to the appropriate sub-system using the following constructor:
public Client(InvokerLocator locator, String subsystem) throws Exception
This way, the dedicated server invocation handler will handle the appropriate clients based on the sub-system.
Why there is no out of the box solution for this ?
I guess no one ever asked for it. The fact is that Remoting 2 is no longer under active development, or I would consider adding something like that.
However, I believe that jaikiran has given a good solution.
By the way, I don't mean to say that Remoting 2 is not actively supported, just that new features are more likely to appear in Remoting 3.