link() modifies the inode (by changing the link count and possibly the
time stamps on the file) and it modifies a directory (by writing a new
entry into that directory). It does not modify the file data. The
linked file in a new directory may have different effective access
permissions because of the permissions on the directories above it, but
it still does not change the permissions of the file that was linked
to. Neither does it modify the file data.
There seems to be a lack of deep understanding about how link() works
and the relationships between directories, inodes, and file data,
because people either keep using inappropriate terminology or showing
substantial ignorance about what actually happens when links are created
and removed.
And, to bring this back on topic, the original proposal was to only
allow hard links to files that you have read access to. Unfortunately
that proposal won't affect any of the scenarios you mention in reference
to files that are readable by you.