RPC is inherently restricted to the request-reply interaction pattern, but there are many more interaction patterns that are useful; for instance, the publish-subscribe pattern is widely used in sensor networks. You can quite easily build the various interaction patterns on top of messaging; trying to build them on top of RPC is going to be quite a challenge.
Strange but situation is that RPC and questions above is a different things, we can talk about cloud computance and use RPC as technical approach why not? RPC is not restricted by points about which you told, we can use subscribing, object channel and moveable instance , and it can be RPC. It can be ORPC, it can be distributed shared network instance, but we can talk about it in context rpc - it's technical approaches to solve. Currently we talk about RPC (ORPC) by compile time reflection. Why compile time? It can make computation during compiling and resolve some questions on a C++ side and communicate through different's technologies, but on a C++ side it'll have one view. We talk about transformation src to any protocols which used on a remote side.