After a couple of changes I got the code running:
1- I now do new com.sun.corba.se.impl.javax.rmi.CORBA.StubDelegateImpl(); instead of reflectively loading and instantiating the delegate. The reflective approach is only used if the javax.rmi.CORBA.Stub sysproperty is specified.
2- I had to introduce a com.sun.corba module that exposes the com.sun.corba.se.impl packages of the system module and make the javax.rmi.api module depend on it.
Do you see any problems with this approach?