While those are all nice features for a remote access protocol, a lot of them are orthogonal to Wayland. There's no reason Wayland would be in the loop for USB forwarding, that's between the remote display software and udev or whatever. And Wayland isn't going to do any audio output, though it'd be nice if there were a way to bundle together audio/graphic/dbus session addresses so that you could point an app at a coherent remote session by setting one environment variable instead of messing about with forwarding all of these protocols separately. The annoying features are going to be things like:
Sane *async* protocol for cut-and-paste format negotiation/data transfer
Custom cursor updating
Communicating desktop geometry (including multiple monitors at different resolutions, etc.)
Relationships between windows ("this window is a modal pop-up to that window")
Mapping windows to processes ("this process appears to have frozen; kill it?")
etc. There's just a ton of fiddly details like this.