Can someone tell me where I've gone wrong?
Some walls are "disappearing" during joining meshes because you have set Backface Culling in 3D view shading options. This makes faces, which normals are not directed towards viewer, not visible. What you need to do is, after joining meshes, Tab into edit mode, choose Face select, select "invisible" faces (you will be able to see black dots in the middle of each, even "invisible" face), Click on Flip Direction in left Shading panel or go to Mesh>Faces>Flip normals or press CTRL+F and choose Flip normals.