If you move files around, RSYNC assumes they are gone, and retransfers
the whole file. Same thing if you change the filename.

I'd like to suggest the following approach to solve this problem:

1> if the --use-this-method flag is set
2> make a list of all files and their lengths, on both filesystems
3> compute a checksum on any files which are the same length
4> if they are identical, send an instruction to duplicate or rename
the local file

That way, if you rearrange or rename files, rsync won't assume they're
gone and retransmit them.

This can't be a new idea... so consider this a vote for all previous
suggestions :-)