This question seems to have two parts:
1) Is there an existing XMPP extension protocol that supports the listed feature?
2) Does Wokkel (or possibly other Python XMPP libraries) support this?
The only XMPP extention protocols for generic RPC behaviour are XEP-0009 (Jabber-RPC) and XEP-0050 (Commands).
XEP-0009 uses XML-RPC payloads sent over XMPP. But as you mention XML-RPC doesn't fit your use case.
XEP-0050 uses XEP-0004 data forms to perform predefined command exchanges with a server. I don't think it fits your requirements #2, #3, or #4, unfortunately.
Wokkel currently has support for neither, but could both be implemented relatively easily on top of the existing code.
For completeness, your requirement #1 (Secure authentication between client and server) should be satisfied just by using XMPP as the transport, regardless of the actual RPC (sub)protocol. It might be that you also require some authentication on top of that, but that's usually pretty application specific.
Requirement #5 seems incomplete in its wording, but XMPP supports application specific error conditions for error stanzas. XEP-0060 (Publish-Subscribe) uses that extensively. For example in its Payload Too Big error.
Wokkel does have support for application-specific error conditions.