"I can't think of a way to get rid of the last seam."
Using a seamless texture : With the Walls UV island (single vertical seam) left-hand corner snapped to X=0 Y=0 in the UV space and the right-hand lower corner perfectly aligned to X=1, then scale from X=0 Y=0 by a whole number the "last seam" will be seamless.
I try to explain with screenshots :
Mark seams around lower edges of the walls to separate them from the floor and add one vertical seam.
Then UV unwrap with a margin of 0.0 . The resulting UV island will be perfectly aligned to opposite borders of the UV space.
If necessary rotate the UV island 90° so that the lower edge of the wall is parallel with the lower edge of the UV space.
Open the UV menu and check Constrain to Bounds.
Next drag the island down (or up) in the UV space until the bottom edge of the island is aligned to the lower edge of the UV space. Having Constrains to Bounds enabled will keep the island within the UV space and the island will seem to "snap" to this lower edge and left-hand corner.
Now you can uncheck Constrain to Bounds.
In the UV editor, change the Pivet to 2D Cursor.
Check that the 2D Cursor is at X=0.0 Y=0.0 of the UV space.
Select the UV island and scale by a whole number. This will result in the UV islands right-hand edge exactly lining up to the X = 1.0 of the repeating UV space. (X=1.0 is also X=0.0 of the following UV space.) So will be seamless.
(Just a note here: If you notice that the UV island has been reversed along the X axis in the following screenshot it is because I started out unwrapping the inner surfaces of the walls but switched to outer surfaces to show the seam better.)
And finally the result of using the 2D cursor as pivet for scaling by a factor of 6: