I couldn't figure out why session restore wasn't working on KWin since it's was introduced in 6.4. Turns out it was hidden behind environment variable.
Anyway, now that there's session restore in Wayland it's essentially complete.