Is there a setting to make Recuva skip a bad sector of a HDD after a certain amount of time?
If not, is there a free data recovery tool that will do that and recover the files as well?
Recuva is not something I have used, but ddrescue (available in many Linux distributions' standard repositories and probably all decent rescue/repair oriented live CDs) will do its best to recover the contents of a block device (such as a disk or partition) or file, with options about how many reties to use for each block that errors. You can even re-run it later to retry the blocks again and it will only try reading from blocks it had trouble with last time. See http://www.manpagez.com/info/ddrescue/ddrescue-1.9/ for details of the algorithm it used and the options you can provide to tweak its behaviour.