I’ve got a working login screen back on the external display
I’ve made some progress. By setting up an xorg.conf with a modeline for the external display, I got graphics on the (lightdm) login screen to show up on it. But the login input fields weren’t on this screen (it was just the background), so this was further evidence that there’s monitor misdetection going on (greeter/lightdm happily thinks it’s displaying the input fields on the broken internal LCD).
So I further tweaked xorg.conf to force X to ignore the internal display, and now I’ve got a working login screen back on the external display. I’ll attach my xorg.conf below; it is a satisfactory workaround.