I disabled all my extensions from the Ubuntu recovery console. While this made it so I could log in, it didn't stop all the crashes. Clearly there was still just some instability with Gnome.
So I switched to KDE. KDE required a lot more configuration to get it to look and feel right. Probably a lot of that was due to residual configuration from the Gnome installation. I imagine it's much smoother getting started with Kubuntu directly. But I was dismayed to realize that KDE too was crash-prone. After a few months, it eventually got to the point where it was crashing every time I closed my laptop lid. At that point I switched back to Gnome, sans extensions.
Both Gnome and KDE are pleasant to use, except when they crash. They are bad when they crash.
Gnome has more reasonable defaults; it makes more sense out of the box. KDE has more cool features – a vertically-split file browser is what I want basically 100% of the time, and I didn't know it until I used KDE.
But the way Gnome does extensions is irresponsible to the point of insanity. There's just no hope of having a stable system like that. A huge ecosystem of extensions has sprung up based on a software design decision so abysmally bad it could only have been an afterthought.
I imagine that the crashes on lid-close-lid-open have to do with shitty drivers for my hardware, so as a warning to future generations: I'm using an HP Spectre x360.