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:
sudo su
gedit /usr/local/sbin/sleepFor5secsAndGetFreshEdid.sh
and paste into it:
#!/bin/sh
/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:
/usr/local/sbin/sleepFor5secsAndGetFreshEdid.sh
If all ok so far, you would create a systemd service:
gedit /etc/systemd/system/sleepForReadEdid.service
Where you would paste this:
[Unit]
Description=Goes to sleep mode and re-read EDID before graphics
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/sleepFor5secsAndGetFreshEdid.sh
[Install]
WantedBy=display-manager.service
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
reboot
]