For your info, I have gone the pixmap route for now, and I will check out custom widget rendering later.
Also for your info, after enabling pixmaps in the conf.h, I got compile errors regarding GDISPVMT_pixmap being undefined, and various other things. I am of course using the single file inclusion way of building uGFX in an IDE, and after checking a few forum posts about this, there didn't seem to be much hope. However, I moved just gdisp_pixmap.c into my local project, eventually realised I had to also remove gdisp_pixmap.c from the gfx_mk.c, and this fixed the build, and the pixmap worked with just a label.
For your info again, I tried replacing the Display in my existing gwinImageCreate so that the image went through the pixmap (uses gwinImageOpenMemory with native format memory buffer) and it failed miserably, displaying only parts of the image, very slow, and regularly crashing with memory errors.
Then I tried the better way of copying the image directly onto the pixmap surface buffer, with no gwinImage at all, and this works perfectly. The live image and label on top are displayed with no flicker at all, same speed and cpu usage as before.
So thanks for the help.