I came across this thread with a Google search for "linux flash drive corruption". I suspect this is an old Linux problem and is not specific to Raspberry PI. I have spent hours recently with this same problem using the DD-WRT and Tomato-USB router software. I thought a USB flash drive would be a perfect way to expand my Netgear WNR3500 router (mips based) but kept running into file system corruption with horrible results (system becomes unusable if you store executable programs on the flash drive). I am using the ext2 file system, so given your problems with FAT, it does not appear to be file system related. I can also reproduce my problem with lots of disk activity -- I don't have to wait hours, the problem will occur in minutes. My solution was to switch to an external (spinning) hard disk -- it works perfectly. That would rule out a generic USB problem. I also have a Raspberry PI but I have always used the SD drive for storage without encountering these issues.
I suspect there is some trick to using USB flash drives that Linux has not mastered but Microsoft has. I have used flash drives for supplemental storage on a laptop running Windows without any problems. Flash drives have restrictions on how data is cleared and my experience suggests problems when the same flash location is rewritten in quick succession. Perhaps FAT and NTFS, as used by Microsoft, writes to successive parts of a flash drive, ostensibly to avoid wearing out the flash drive (a technique called leveling) but which has the side effect that the same location is not written to twice in quick succession and prevents data corruption.
I think my next step will be to write a program to write to the same disk location in a few times using the raw device instead of going through the file system. Another possibility would be to use a file system like jffs that supports leveling. See the Wikipedia page for more information (including issues when working with flash memory):
If there is any interest here, I will follow up with my results.
I find it hard to believe, however, that this could be a generic Linux problem. Have people just not used flash drives for Linux storage until recently with the increased popularity of embedded systems?.