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.
That's exactly what I did to create this wallet, I took a big bunch of keys, imported them all, and then let the client download/scan the chain.
I very strongly suspect the issue is somehow related to imported keys (as opposed to those generated directly by the client).
That can happen when the site is down for maintenance, bitcoind receives the coins, but the part where it notifies the backend DB doesn't work. What I usually do in these cases is force a rescan of the events that happened during the time the backend was offline.
Thank god most people aren't like the person posting this reddit thread and don't start spreading FUD if don't get an instantaneous reply from the support.