I found that configuring Smart Queue Management (SQM) on my OpenWrt router drastically improved this issue.
https://openwrt.org/docs/guide-user/network/traffic-shaping/...
https://openwrt.org/docs/guide-user/network/traffic-shaping/...
https://www.bufferbloat.net/projects/codel/wiki/
https://www.bufferbloat.net/projects/codel/wiki/CakeTechnica...