I've still been trying to solve my issue on and off, and thought I would share recent developments.
I tried using a different DVB tuner device to try and rule out possible hardware or driver issues with the Hauppauge tuner I had. I found an Xbox One Digital TV Tuner - a USB tuner with a different chipset and set up Tvheadend again. Still using the same Pi with Raspberry Pi OS, and the linuxserver.io docker package.
This time full EPG data for the all the SD/DVB-T channels quickly propagated - but still nothing for the HD channels. Which was still and improvement on the spotty EPG coverage I had before, but also not fully working. I was then planning to try a different OS image for the Pi, but unfortunately I had to leave the project for a few days.
However, when I got back to looking at this today - surprise! There is now full EPG data for the HD/DVB-T2 channels as well. Which is great that it now works although I would like to find out why.
Is there any reason the EPG data might take so long to be received? I'v heard that it can sometimes take a several hours to come in, but not 1 week+. Perhaps the different tuner is getting a better reception from my aerial? Or maybe the gremlins have finally just left my system.