First, here's my introduction writeup on the new RPC system:
That may help enough on its own.
I'll also mention that the new RPC system is (deliberately) a lot more flexible and less dogmatic. Both the 'routing' layer and the 'serialization' layer are completely within your power to override and provide your own solution. RpcInterface, RpcDelegate, and the annotation based model are provided for convenience (and are what we use internally) but you don't have to use them if they don't fit your model. Ditto ProtoRpcSerializer; if you want to keep using Java serialization for your module we won't (can't) stop you.
The only underlying requirement (if you want to use our RPC system) is that your gateway hook returns a GatewayRpcImplementation. That interface contains RpcRouter, which you can choose to implement using whatever logic you want based on the incoming RpcCall triple (module ID will be static, but the package ID and function name can be used to disambiguate however you want). You just have to implement the routing function and return an RpcHandler, which is a relatively straightforward functional interface.