Bad news! It didn't work.

The transaction is indeed removed, but the bitcoins aren't ever returned. Something must be missing...
I did another test on a fresh wallet just to make sure, too. I started with a wallet that I deposited 1.0 BTC to (after letting it download the entire block chain freshly), sent a small amount to an address in another wallet, and then emptied the rest with a second transaction (this reproduces the bug I'm trying to solve in my main wallet!)
Then, I modified the wallet.dat using db_dump and db_load as JoelKatz specified. The transaction disappears (picture below), but the bitcoins are never refunded...
http://img833.imageshack.us/img833/4307/43969381.jpgSomething in the wallet has to be telling the client that the bitcoins are in use for a transaction, but I can't find enough information about the wallet format to figure it out... I'd appreciate any insight!