Thanks everyone, for the pointers. I've found an opportunity to simplify the setup, still 2 DCs and 3 rack setup (RF = 1 for DC with 1 rack, and RF = 2 for DC with 2 racks), but now each rack contains 9 nodes with even token distribution.
Once I got the new topology in place, I ran multiple repairs (serially) on a single node to see if I could get the merkel trees to sync up with the other nodes in that range. I knew the 1st time, and even expected the 2nd run, would be a bit out of sync. What surprised me was that on the 3rd repair run, there were still over 600 ranges out of sync for 1 CF, and over 1000 ranges out of sync for another CF. To me, this isn't a big deal (unless someone more knowledgeable about these things thinks it is), but the repair process isn't using nearly as much space while it's doing its work.