It's been a long time since I've worked with this stuff in any depth, but I wonder if there's the concept of "handoff". While a VT is front-and-center, logind should be in control. While GDM is in the foreground, GDM should be in control. While the desktop environment... etc.
But it seems to me that each of these things aren't entirely aware of the other, and constantly fight for control. I know logind has an "inhibit" API that lets another program take over some functions, but who knows if everyone uses it properly. And does GDM have the same thing? Or is it expected to just know when it should step aside?