Regarding 1: if you open up dmesg after it happens and you see an error regarding “No edid read”, your GPU is having a hard time automatically getting the monitor’s edid over display port. My 7800xt has this issue.
If your monitor setup doesn’t change much, you can manually set the edid on a per output basis. Here is a good guide.
Also, regarding 3: you may need to set your amdgpu feature mask in your kernel parameters.