I did try to install Bitoin ( with -datadir parameter) in hidden truecrypt container on a USB 3.0 Stick.
While donwloading / updating the blocks the transmission was interrupted and i got two times the "22dbrunrecoveryexception" error message. After then, it was not possible to continue at that point.
Now, i start the procedure at new, but installed bitcoin on the HDD. It looks, that the transmission runs much faster. After this is done, i plan to move the folder to the USB Stick.
The disk i/o that the Bitcoin client does to verify each block as the blockchain gets downloaded is immense. Having that i/o occur on an encrypted filesystem (the truecrypt container) will degrade performance.
Another thing: I guess, the transmission get more slowly as progress comes closer to the end.
Yes, each block has more data, stating in April, thanks somewhat to a widening interest in Bitcoin for speculation and commerce, but more significantly due to SatoshiDICE.
The Bitcoin client now supports passphrase encryption so there may be less necessity to hold the wallet.dat on an encrypted filesystem. You could also keep the wallet.dat on the encrypted filesystem but keep everything else on disk and use a symlink for the wallet.dat to point to the wallet.dat on the encrypted filesystem.
You specifically mention a hidden container, which would likely mean you want plausible deniability.
One option might be to keep a several GB partition on the flash media as a staging area and before launching the client, temporarily copy the two blockchain data files (but not the wallet.dat, which you use a symlink to the wallet.dat that remains on the encrypted filesystem) to the staging area. Launch with -datadir= the staging area.
That way you still never have any Bitcoin files on the hard drive, yet the blockchain data isn't being written to the encrypted filesystem while the app is running. After shutdown of the Bitcoin client, then move the two blockchain datafiles back to the encrypted filesystem for use the next time.