I believe I am having similar issues on different hardware. I have found a solution that addresses my issues for the most part, but I think ultimately this is a systemd issue. I see people complaining about this across many distros, and systemd is often the common denominator.
Here is a thread that explores this issue. I am still trying to solve it 100%, but it might be a good start for you.