Yeah, rooms are the way to go for this, and would have saved you some work in the initial placement and routing of the subcircuits. You can set the overall outline of the rooms to tessellate cleanly at whatever spacing you want and then align them outline-to-outline, but that sometimes requires a bit of care with your grid and component snap settings. If you have components with mixed metric/imperial spacings, or otherwise off-grid features, you can end up with maddeningly misaligned outlines or components.
If you don't want to do that, a manual option could be to draw some gridlines then move the unions around.
Along these lines, if you pick a pad within each union to be your reference point, you can snap that pad to each of your grid marks to place the other unions easily and accurately. You don't necessarily have to draw a whole grid, I often just do diagonal tick marks on a mech layer, and copy those to all of the offsets I want.