I was just able to retrieve from cold storage. One thing I would recommend to speed things up as you are trouble shooting is just scanning the transactions that the transfers are in rather than the entire chain. My transaction was in block 311671 so I did a wallet_rescan_blockchain 311670 2 (since I'm not sure if it scans the block of or the next in line. That would be useful information if anyone in the know can provide it.)
Other than that I'm pretty sure its just a matter of the public key being registered on the blockchain as a contact account before you import the private key. You could a) create local contact account. >> transfer to it. >> register it >> import private key >> rescan transaction blocks >> profit
or b) create local contact account >> register it >> transfer to it >> Import private key >> rescan transaction blocks >> profit
P.S. I am really really tired right now. If I am wrong or am just being stupid please let me know.
So what you are saying is the reason it didn't work for me was because I haven't registered the local account.
Is there a reason for that restriction, if that is the case?
I am not exactly sure. The reason I think that is the case is because of something that happened to me a while back when I was playing with my demo wallet private key.
I was resyncing the blockchain, and I had the bright idea to import the private key of my demo wallet into my personal wallet. I was at a point in the blockchain prior to the registration time of my demo wallet so it threw an error when I tried to import it. So being the smart guy that I am I created an account called demo-wallet, imported demo-wallets private key, and then watched demo wallet magically go from unregistered to registered as my client caught up that point in the blockchain.
Problem was that even when fully synced there was no balance. I still had the account open on my demo wallet so I could see that was wrong. But it got weirder. When I tried to send from my personal wallet to demo wallet it would send it locally to the franken demo wallet that didn't have any funds in it. Those new funds would show up, but I was unable to send to the demo-wallet that was registered on the blockchain. My local account was blocking it. Even worse I couldn't rename the local account because it was a registered account.
Someone that understands titan better than I do will have to explain why this happened to me, and it might be totally unrelated. It seems similar to the issue you are having though. I would try on another wallet to create contact account. register contact account. import priv key, and rescan. Funds should still be there.
***edit*** scratch that. If that public key isn't registered. I would just register it as a contact account on the same wallet, and then import priv key and rescan.