I decided, after thinking about it, that I was using Google Voice only for incoming calls. The VOIP plan I chose included plenty of minutes, and outgoing caller ID works properly with them, so that had already become my preference for outgoing calls.
Since I'm only using Google Voice for incoming calls, I tried forwarding to my VOIP provider account's number, rather than to Google Chat. It works fine, perhaps even a bit better than Obi/XMPP.
So I've removed GV from my Obi, and filled the empty slot with a second, cheap plan to have as an alternative. My GV number still rings through (forwarded to the new number, which I don't tell anyone), the way it used to, and though outgoing calls aren't going through GV, people at the other end only notice that the CallerID is correct.
We're going to have to take GV/XMPP out of our Obi's soon anyway, I just figured I might as well get things set up and tested beforehand.