I renamed a directory containing a large number of large photos on one
side of a mirror, and used unison to move that across.
While the remote side did correctly optimise this as a local copy
operation on its end, removing the need to copy GBs worth of data over
the network, it did admittedly copy all the files on its disk, then
delete the old ones.
Perhaps an optimiser step could come in somewhere, converting operations
that are "make a single copy; then delete original" into just "rename
file".