An OpenVPN connection requires that one end is a client and that the other is a server.
So you will need to build your mesh manually, ensuring each node has a server configuration and a client configuration. Each node will need to run two OpenVPN instances, one for the client and one for the server.
OpenVPN supports advertising of routes available behind the virtual interface it creates. So you can make the OpenVPN nodes forward traffic not destined for that node to another node. Again, you need to set this up manually with
iroute statements in your config files.
In each config file, you can specify multiple servers for a client to try connecting to. So you can specify multiple entry nodes for each configuration file.
To do it right, you'd need to make a CA for each client and server pair. You can compromise and have a single CA for whole mesh. You can compromise further and just do passwords, but you still need certificates for server identification.
I guess to be really secure you'd need another interior virtual network that isn't directly accessible by external clients, but accessible to anything once they are on the virtual network.
A lot of work to keep track of everything but certainly possible.
If the clients are not to trust the server, they need to communicate over the server using encryption. You could go so far as to run Tor internally on this mesh network on each server, then direct correlation between a node and a service would be difficult to make.