using a new wallet implies that I can transfer the coins which the client won't let me do since it will check what I try to send against getbalance (it won't let me transfer all the coins)
You can create a new, empty wallet and use eg pywallet to extract the private keys from your old wallet and import them into your new wallet. Try it with just a few keys (or one only) first, use that temporary wallet with a rescan and send the coins to another new wallet.
Should work to get around this problem; however, a fix of the source to avoid that would be nice.
Also, not seeing the source/destination address in a transfer to yourself is not helpful either.