That is a very helpful explanation. I do have a lot of repos configured but most are necessary. Some are now added by gnome-software.

_copr_phracek-PyCharm.repo   fedora-updates.repo                  rpmfusion-nonfree-nvidia-driver.repo
dropbox.repo                 fedora-updates-testing-modular.repo  rpmfusion-nonfree.repo
fedora-cisco-openh264.repo   fedora-updates-testing.repo          rpmfusion-nonfree-steam.repo
fedora-modular.repo          google-chrome.repo                   rpmfusion-nonfree-updates.repo
fedora.repo                  rpmfusion-free.repo                  rpmfusion-nonfree-updates-testing.repo
fedora-spotify.repo          rpmfusion-free-updates.repo
fedora-updates-modular.repo  rpmfusion-free-updates-testing.repo

I added these to /etc/dnf/dnf.conf based on googling;

max_parallel_downloads=10
ip_resolve=4
keepcache=true
deltarpm=true