From email discussion:
Maybe read the dnf cache, check if the has of the files there is equal to the files we want to download, and then just copy it over
This makes it possible to conserve bandwidth (as dnf already has a timer to refresh the cache regularly), and that's important for people who have capped connections or pay-per-byte connections.
For the record: not just bandwidth (which is also important in terms of time, not just data transfer caps) but also size on disk.
My /home is separate from /, and / is kept a reasonable size (15 GB) but I frequently get warnings about / being nearly full because yum, dnf and packagekit triplicate the cache :)