The most reliable/transparent/foolproof way to do this is to obtain at least one free inbound DID from Callcentric, as you mentioned. You can configure your GV account to ring Google Chat (aka Talk or Hangouts) and the CC DID(s), and then configure the same Google user ID and PW on SP1 of OBi #1, for example, and then configure your CC free DID on SP1 of OBi #2 instead of GV. OR, you can get two CC DIDs, and use one on each OBi, instead of the Google credentials. I haven't tried it yet, but CC now lets you define multiple SIP "extensions" on one account, which would even allow you to use just one CC free DID that rang two virtual extensions, each with separate SIP credentials, one on each OBi.
I have my GV account configured with two CC DIDs; one rings my OBi, and the other rings my IP phone system. The CC DIDs have been very reliable for me, and you can use CC for E-911 dialing, an important (mandatory, in my opinion) feature for any hardware telephone. Another advantage of this is that, if you select CC's pay-per-minute outbound calling option, you have a backup way to make phone calls when GV goes down. Yet another advantage: if you route inbound calls through CC instead of through Google Chat, you get Caller ID with name (CNAM). AND finally, you avoid the inevitable issue of what might happen if/when Google gets rid of XMPP support, thus rendering OBi/GV use (at least temporarily) dead.
If you really don't want to do this, then you can configure both OBi boxes to use the same GV account, but unplug the one not currently in use, to avoid contention for grabbing the GV login session, which will screw up inbound calling.