Since your main target is to save disk space, there is another solution: de-duplication (and probably compression) on file system level. Compared with the hard-link solution, it does not have the problem of inadvertently affecting other linked files.
ZFS has dedup (block-level, not file-level) since pool version 23 and compression since long time ago. If you are using linux, you may try zfs-fuse githubzfs-fuse, or if you use BSD, it is natively supported.