One more update. We figured a workaround, for now. Basically, we have defined the openvpn tunnel with all of our local subnets in the config. Then, we tunnel those same subnets using ipsec. This adds up to 50 or so phase 2 entries, but those are pretty static; we don't have to change them often.
Apparently, the ipsec tunnels take priority in the routing table over the OpenVPN ones. This means that when we have to add a new route to the OpenVPN tunnel, and thus restart OpenVPN, traffic over the ipsec tunnels still flows and only the traffic to the customer sites (which is minimal, at least from the site that we're dealing with) is interrupted by the OpenVPN restart.