Particularly, because change of replicas without change of active node for any vbucket is still counted as move, those moves are still limited on basis of 'outgoing' node (which in this case is same as incoming).
So we often see a confusing case where at the beginning of rebalance we 'move' only replicas. That happens exactly because for all movements 'out' from each node we sometimes first do moves 'into' same node, thus active vbuckets are indeed not moved.
For sake of equalizing load on cluster as soon as possible we indeed should avoid this. We need to move 'replica only' vbuckets in the end. Or at least, clearly, not at the beginning.