Responderei a minha própria pergunta, mas fique à vontade para postar outra resposta se você tiver uma ideia melhor.
Aqui está o que eu fiz. Primeiro, montei a partição como somente leitura:
mount -o ro,noload /dev/sdb6 /badhdd
Então usei find
para executar o ddrescue em cada arquivo:
mkdir ~/rescue
mkdir ~/rescue-log
find /badhdd/path/to/directory -type f -name "*.NEF" -exec ddrescue -vvvv -P1 -n --no-trim /badhdd/path/to/directory/{} ~/rescue/{} ~/rescue-log/{} \;
Para quaisquer arquivos com erros que eu fiz:
ddrescue -vvvv -P1 --reverse /badhdd/path/to/directory/{} ~/rescue/{} ~/rescue-log/{}
Após 72 horas, recuperei 65 arquivos de pouco mais de 400 com um tamanho médio de 10MB. A velocidade varia muito - são necessários menos de 10 segundos para recuperar alguns arquivos, enquanto outros levam de 5 a 6 horas.
Isso significa que, se eu conseguir recuperar apenas os arquivos de que realmente preciso, a recuperação levará de 18 a 20 dias, em vez de mais de 120 para a partição inteira.