There were dozens of ranges, too many to blacklist. Which made me suspect that it might actually be the memory controller. In which case, it's totally F'd. But given this I went for total data evac.
Couldn’t you just move the disk to another device and read it from there instead of risking data corruption or going through all the hassle of comparing checksums?