@bp81
I believe I solved my own problem. Posting the solution here for anyone else who may encounter a similar problem in the future.
It occurred to me that each VPN server at HQ defined a separate tunnel network. Upon further examination, there were no routing table entries on the router at HQ to move traffic from the tunnel network for branch 1 to the tunnel network for branch 2, and vice versa.
Tunnel network for branch 1 is 172.31.4.0/24. For branch 2 its 172.31.8.0/24
For both servers defined at HQ, in IPv4 local networks, I put in an additional entry. 172.31.0.0/16. This subnet covers all possible tunnel networks I might define that start with 172.31.X.X.
This resolved the issue. Traffic can now move from branch 1, to hq, to branch 2 vice versa without issue. I do not know for sure if this solution is "proper", but I do know that it works and it does this by creating the needed routing table entries to move traffic from one tunnel network to another.
This was never an issue when I had a single server with many clients, because all clients existed in a single tunnel network, but when you have one client to one server, they all have separate tunnel networks, making the extra routing entries a necessity.
The only reason I bothered with this is to use DCO, and it does make a big difference for our offsite backups, so it was worth the trouble.