@Rascas the issue is max_framebuffers=2 on retropie. It should be max_framebuffers=1 when using a single display. This resolved my issue.
Tried all different cables, monitor inputs, monitor outputs, rebuilding libcec. only solution was max_framebuffers=1.
Thread here shows it should be set to match your displays. https://www.raspberrypi.org/forums/viewtopic.php?t=245789
I'll accept maybe it's an oddity with my display, but since making that change i've been unable to reproduce it.
Think the corruption was perhaps bad luck... but I've seen a few reports of recent kernel/raspbian updates causing this.