Rework how distfiles are handled:
- Copy existing distfiles from DISTFILES_CACHE to /portdistfiles
- fetch
- checksum
- cpdup back from /portdistfiles to DISTFILES_CACHE, cpdup does not copy files which it believes to have already been synchronized (by observing that the source and destination files' sizes and mtimes match)

This should prevent races where multiple builders try to fetch to DISTFILES_CACHE

There may still be races during the copy from/to the DISTFILES_CACHE but they should not be fatal as fetch/checksum is run after