There aren't actually much that's "unmovable" - and those can still be defragged when doing an "offline" defrag (ie., a filesystem that can be "unmounted", or at boot-time before launching the full windows system).
Basically the $files (special NTFS files, like $MFT) require offline defrag afaik, and the paging file as well. But registry and such should be normally defraggable. I think

I wonder how NTFS/FAT bad sector marking works these days... internal drive logic handles bad sectors by remapping to a "scratch sector" - I wonder if it reports error when doing this, or if it's just noted down in the S.M.A.R.T log.
Doing a /r does sector-based checking after it's done examining the logical (ie. filesystem) structure, so it should indeed find problems. But again, the question of how this mixes in with the internal drive badsector remapping remains.
I wish computers were really deterministic
