I've done a bit more testing and it seems it is possible to display an image or video by writing to the framebuffer e.g.
fbv2 <image.png>
i.e. the same way that miniTFT support works.
The only problem is that with the default KMS graphics driver overlay dtoverlay=vc4-kms-v3d, both displays share the same framebuffer device, so the image shows on both displays.
But it's only visible on the main display when EmulationStation isn't running. In practice you only see it for a brief second when launching a ROM (the time between ES exiting and the emulator launching) or exiting a game. It doesn't seem to break anything so I think I can probably live with that minor annoyance.
If anyone else is interested in this, when I've written some code I'm happy with I can stick it on github for others to use.