I don't think some of you guys understand how a device like the OBi works. When you pick up the phone, you get dial tone generated by the device, not the service providier, and then it collects the digits you dial and only when you have completed dialing does it actually send anything to the service provider. Pausing between digits does nothing, nor does picking up the phone and waiting a few seconds before dialing, because either way nothing gets sent to the service provider until you finish dialing.
"But it works for me", you may say. That's called coincidence. You experience the problem and redial more slowly, and it seems to work. In actuality, redialing a second time seems to work much of the time, but it doesn't matter how fast or slow you dial. There is no VoIP adapter anywhere that sends digits to the provider individually as you dial them, before the call is connected - after that, if you are talking to a computer at the distant end of the call, that's a different story, but that's also not the service provider.
What Obihai could do that would help this situation is to make a firmware change that doesn't just accept the first 503 error and give up, but instead immediately retries the call. You might be able to make it work that way by creating a Trunk Group and specifying the same service provider, in this case your Google Voice account, multiple times. For example, if your Google Voice account is sp1, you could try using sp1,sp1,sp1 as the TrunkList value, which in theory would try the call three times before giving up. You'd then have to use the Trunk Group as the destination for your outbound calls. I don't know if that would actually work because I have never tried to create a Trunk Group; I just remember reading about them in the Obihai manual that you can download.