Yep - I have backups, so I'm not worried about any of these changes.
Balance before I tried to use sendtoaddress was around .5 btc.
After I sent everything out of the wallet, getinfo showed 0.0 btc, and listtransactions showed the "stuck" transaction that contained the already spent outputs. It sat that way for a few days.
I went to pywallet and deleted the "stuck" transaction and restarted bitcoind with the -rescan parameter. After that, listtransactions no longer showed the "stuck" transaction, but the wallet balance was still 0 btc.
Interestingly, a listaccounts showed all of my accounts with positive balances, hence my observation that the getinfo balance isn't simply a sum of the listaccounts balances.
I agree that accounts are sub-optimal. I don't think they belong in a consumer wallet, and any implementation of them for a business wallet should be outside of the core.