Anvio, Callcentric, and
VOIP.ms are the big providers, and there are others who have happy customers too. You could probably port the existing phone number to one of those.
I use Anveo... unlimited residential incoming at $2 per month +$0.80 for 911. Alternatively could have opted for $1 per month for 40 minutes per day incoming plus roughly $0.01 per minute after that.
You can dial out via your SIP provider (about $0.01 per minute to USA), or you can dial out via GV. That could still leave you with your problem if people call the new GV number. You could have GV incoming calls to not ring your local phone, or you can just set GV to send all calls to voicemail immediately. There is even a way using Google Mail to call out via OBi without having your number displayed on the recipient's caller ID. I have not tried that.
Regarding the " theoretically do something more complicated that involved the OBi and something else" thing, I would see that as a mental exercise that might interest somebody else. I expect after researching and describing a method, I figure you would not find that as something you would care to implement. I am not holding back something that I have thought through. It would take research. One possible answer would be the "something else" could be an Asterisk server or variation. I don't use or plan to use that.
SIP providers are generally reasonably priced. I really take advantage of some features that I did not anticipate including a method of dealing with robocalls by requiring the caller to press a touchtone key if the person is not already on your list of callers. I like checking the SIP provider logs to see what numbers tried, and to look the number up in 800notes to see what complaints were made about that number. That said, GV does a pretty good job of blocking incoming notorious spam calls.