There are probably several different ways to create a system that behaves as you wish. Perhaps others will chime in here with other approaches. You can do this for a small monthly charge. There's a monthly fee to host each DID, and then you can either pay per minute for inbound and/or outbound calls, or you can buy a monthly "bucket" of minutes, depending on your call volume.
I have the most experience with Callcentric, so I'll describe a setup using their service. You can probably create similar solutions using
voip.ms or Anveo, or some other provider.
There are some techniques that involve creating call forwarding rules within the OBis, but I prefer to do this at the service provider level instead.
Using Callcentric, for example, you need to adjust how you look at things, vs. the specific way you described the forwarding. You'd have one account, with three different DIDs, and one shared voicemail box. All inbound calls to any of the three numbers will ring whichever SP1-SP4 slots you set up on each OBi, and, if unanswered, will all simply go to the one VM box, no forwarding from one DID to the other needed. Outbound calls from each SP can be configured to display whichever of your three DIDs' caller IDs you wish.
You can either port your existing Google Voice numbers out to Callcentric or get new DIDs; your choice. Porting a number out of GV costs $3.00 to "unlock" the number for porting. This fee is basically an anti-fraud protection for you, the GV user, to prevent people from stealing your numbers. Callcentric is running a promotion to port in numbers for free.
If you want to use two separate physical telephone lines, you can program the OBi 202's SPs to ring line 1 or line 2 as needed.
For example:
SP1: use 0001 for outbound calls; ring line 1 for inbound calls to 0001
SP2: use 0002 for outbound calls; ring line 2 for inbound calls to 0002
SP3: use 0001 or 0002 (pick one) for outbound calls, ring line 2 for 0000
You'd then use Callcentric's "Call treatments" to define how long to ring, and when to go to VM, etc. You would create a separate "extension" to configure each DID on each SP of each OBi. Each extension consists of a user ID and SIP password. With Callcentric, you have one primary user ID (your 11-digit Callcentric account number, starting with 1777), followed by a 3-digit extension number, like this: 17772771234101. This allows you to control which extension rings under which conditions.
All calls, from or to any of the three DIDs share the same calling rates and per-minute or monthly bucket plan charges, so there is no need to pay for three different monthly plans. VM is free.