I also wrote a modification to my cart which should prevent this in the future. Unfortunately, it won't be of much use until Quest gets their shit together. I will be releasing this with an update to the existing osc bitcoin module
instead of publishing a separate module. They beat me to it.
Further details on this, for the immediately curious:
created a table in the DB linking order ids to unique addresses
A cron job populates this table with addresses but does not assign orders
At checkout, instead of querying bitcoind for a new address, it pulls one out of the queue, and assigns its order number
call setaccount(), though if this fails, it is no biggie. The address is already linked in oscommerce.
This avoids any lag caused by connectivity issues between bitcoind server and php server (or other bitcoind-related issues).