This isn't exactly a question, because after like...8 hours of debugging, I figured it out. However, in zephyr/samples/bluetooth/mesh, it defines a hardcoded device uuid `dev_uuid`. This means that when you upload the code to more than one device, they all have the same uuid. This means that when you try to add them all in the nRF Mesh app, that despite that they all have different MACs (or whatever that code it shows is), nRF Mesh will add one, then replace that one with the others as you add each, so you still only end up with one device listed, with no apparent explanation. I couldn't find any mention of this in the readmes etc., and dev_uuid is buried in the middle of the code with no note or anything. I wasn't sure if it was the device key (which appeared to be the same for all of them, but was a side effect of the collision, I think), or just a glitch in nRF Mesh, or what. Changing the dev_uuid manually, or adding code to automatically generate one, solved the problem, and nRF Mesh added the devices as separate entities after that.
Dunno what you want to do about it (add some notes somewhere, perhaps?), but I thought I should make this post so that others can find it, at least.