I had a similar problem and I could not remove the files because the stat failed. A fsck solved the problem.
It can happen that you loose some information when you perform a fsck. but you can run it first with the -N option to see what would happen.
I don't know how to automatically skip the corrupt files, I guess the dd command could help for a more low-level copy, skipping the filesystem problems (in fact, it has a noerror option), but I don't know exactly what options you should use. Check out this site if you want to try:
where this low-level copy command with dd is, for example:
# dd if=/dev/sda of=/dev/sdb conv=noerror
And, as I read there, there's another tool called ddrescue! Fine!
Tell us if it helps.