FS deduplication solves the problem at the storage level, but not at the transfer level. The components would still be downloaded multiple times if the downloader doesn't have a way to know what has already been downloaded.
Docker's way of doing things is basically an admittance of defeat by lazy engineers. We can do better than that.