As far as I know RMI only enables you to execute code that already exists on the fetchers side. But it sounds like you want to send code to the Fetcher to be executet.
In that case I would consider writing an own ClassLoader
and send class bytecode to the fetcher which is then loaded and executed.
As a protocoll I would recommend HTTP, there are relativly stable implementations that also support TLS and SSL around and it removes a lot of Socket related pain from you.