Yes. It’s doable. The NAT stuff is dealt with by Steam Relay where you communicate via SteamID or fake-ips (provided from the Steam API). Might want to ping @Enhex as it’s possible he’s poked his head there.
Lobbies and the rest are technically a separate thing that interacts with networking and UI. Urho3D has nothing in place that you need replace for it so it’s ground-up work. Lobbies have never existed as far as it is concerned, so roll your own thing.
The Urho3D networking code is amongst the easiest to overhaul in the codebase for any change because aside from just changing types around here and there porting it is just overhauling a few functions, the Connection class, and the message-loop (lots more of course, but the bulk of the work is there). kNet → old RakNet took a few days to proof of function (@SirNate0 iirc carried the work forward to SLikeNet and probably invested more time than that ensuring function). The data-ghosting, interpolation, and the like remains the same regardless of what communication API you use.
It gets harder if you need these features for non-Steam builds. You need to provide an intermediate authentication server to access Steam APIs to dish out tokens so your network traffic can cross steam relays.