Re: The app doesn't make RPC calls?
You are again messing up with the RPC concept and some specific RPC implementations. IDL was designed to describe interfaces in an independent way - it was adopted for some RPC **implementations** because it was a handy way to describe procedures calls without being tied to a single language. From this perspective, it's not different from any other specification that describe a software interface.
Nor RPC is stateful by definition - no "procedure" needs to be stateful by definition.
That said, many old RCP implementations were far better designed that the actual fashion of sending text blobs around - without any real checks at the compiler or execution stage of what is going around - because many of them lack a formal definition of the interfaces - it would require far better skills.
Code today is much more brittle than it was - probably because developers no longer understand the concepts - narrow minds don't help.