What if you boot with HDMI, let it boot and from serial console you put it in sleep state for 5 seconds:
sudo rtcwake -m mem -s 5
Does it succeeds in reading the EDID upon wake up ?
If yes, this would be an inelegant workaround, but there might be better ways to do something similar.
[EDIT: Got some time for trying, and I think there are odds it would work if previous test worked out.
You would create a script such as:
and paste into it:
/usr/sbin/rtcwake -m mem -s 5
Save it and close gedit.
Make it executable (still as root)
chmod u+x /usr/local/sbin/sleepFor5secsAndGetFreshEdid.sh
Then you would check it works:
If all ok so far, you would create a systemd service:
Where you would paste this:
Description=Goes to sleep mode and re-read EDID before graphics
Save and close. You would check it is ok with:
systemctl start sleepForReadEdid.service
If it works fine, you would enable it and reboot for trying:
systemctl enable sleepForReadEdid.service