What about having a :link face attribute (property) that is soft, not hard?
What does "soft" or "hard" mean, here?
That way, a single (possibly user) definition of the :link attribute would
automatically affect any faces that have that property. And it would also be
easy (including for users) to selectively apply the :link property to face
or mouse-face or both.
I think this can be done by making these faces inherit
from a face named `link'.