Thanks chjj. Yeah it's always LD_PRELOAD. There is wireproxy [1] though that might do what you want?
https://blog.torproject.org/introducing-oniux-tor-isolation-...
From a quick search, https://blog.thea.codes/nordvpn-wireguard-namespaces/ sees to have at least the bones of a decent solution, though I've not had a chance to dig very far. A lot of results use root to set up the namespace, but I was pretty sure that shouldn't be needed with a new kernel and user namespaces enabled
https://docs.kernel.org/admin-guide/syscall-user-dispatch.ht...
This seems like a very cool, useful project though!