How to scale OpenVPN when client-to-client is a must?

Have some name resolution, or name registration system so that clients on all VPN servers register their name and IP they get assigned, so they can resolve and connect to each other by IP.

Then just make sure you setup routing properly and don't use any NAT on the VPN servers. So if you have 192.168.100.0/24 on VPN, and 192.168.101.0/24, setup IP routing so those two subnets can reach each other.

This would mostly just be a standard site-to-site VPN routing setup which also requires proper routing setup. Just have multiple servers set up.