Thanks to your advice, I was able to get this to work.
I started by creating the footprints as if they were normal SMD pads on the top copper layer. I then lay out my board, making sure to get these inner pads exactly where I need them (it will be extremely difficult to move things around later), except they will of course be on the top layer for now.
Once all the inner pads have been placed precisely, I add a mechanical drawing outlining all the pads as accurately as possible. This is because once we move the pads to inner layers they will no longer be visible. This serves as a nice visual aid later. Save and close Pcbnew.
I then open the .kicad_pcb file in a text editor and find all the pads that need to be moved. Searching by footprint name was helpful for this. I needed to change the ‘layers’ for the pad from F.Cu to In1.Cu or In2.cu. Like this:
Don’t bother changing the layer of the module, it will just get changed back when you open the board again.
Save and re-open the board. You will be greeted with a warning box like this:
You will get very used to this interrupting your work. Anytime you try to pan or zoom after clicking on one of the now invisible pads, this error box will come up. It is important to deselect anything, or at least select a legitimate pad before trying to route/pan/zoom.
The router was a bit wonky, and the error boxes kept popping up, needing to be closed. But I got everything routed and even the DRC check works.
One thing I found out, you can’t move the pads once you have changed their layer. Even if you drag select everything and move as a block, you will leave the altered pads behind (but you can’t see them! you can tell when you look at your gerbers).
It is frustrating and time-consuming, but the good news is it can be done!
Thank you for the help.