I've spent today thinking up a elegant way to implement RPCs, and I've come up with a really nice solution. It requires one call on the receiver to register the function. Calling the function is a single function call:
RAKGS_RPC(SystemID, RPC_ID, argumentCount, [arguments]);
The SystemID is the system to invoke the function on, ID is a number that is used to register the function on on the server (they must match on caller and callee). ArgumentCount is the number of arguments the function takes. [arguments] is an optional list of arguments. The number of arguments is up to you, and can be any built in type.

Got a party tonight and I'm going skydiving tomorow so I'll implement this thursday I think.