We found that some of our copy table job run for many hours, even when there isn't that much data to copy.
Vikas Vishwakarma did his magic and found that the issue is with copying delete markers (we use raw mode to also move deletes across).
Looking at the code in 0.98 it's immediately obvious that deletes (unlike puts) are not batched and hence sent to the other side one by one, causing a network RTT for each delete marker.
Looks like in trunk it's doing the right thing (using BufferedMutators for all mutations in TableOutputFormat). So likely only a 0.98 (and 1.0, 1.1, 1.2?) issue.