If you wan’t to the network traffic from one container to go through an other container’s network then using the same docker network won’t work. This is similar to a LAN network where you have a machine connecting to a VPN while the other machines on the same LAN won’t use that VPN. In that situation you would have to set up a VPN on your router. You probably know that already you need to set the openvpn client as a gateway for other containers. Normally the gateway is the IP address of the host on that docker network. This is why host network would work if you were connecting to the VPN from the host. I can’t tell you the proper way for sure to use a container as a gateway but you can actually run swarm services on host network.
You could find some solutions like this (not tested) Docker
or run a proxy server on the host or inside a container which connects to the vpn.
These are just quick ideas but there could be a much better way too.