Just to reply to my own question, I managed to fix it.
I have been using DSI-1 in contrast to others above who used DSI-2 for the screen. I found I needed to explicitly set this in the display config settings (which get added to config.txt):
lcd_rotate=2
dtoverlay=vc4-kms-dsi-ili9881-7inch,dsi0,swapxy,invy
(note dsi0 is DSI-1 and dsi1 would be DSI-2 - see here for info: https://forums.raspberrypi.com/viewtopic.php?t=380866 )
I also have the /usr/share/X11/xorg.conf.d/90-monitor.conf file in place:
Section “Monitor”
Identifier “DSI-1”
Option “Rotate” “left”
EndSection
and all functions as expected. Touch still works after waking from sleep as well.