This feels a bit hackish, but I think it is still an improvement.
The way a tls address is computed in the various architectures is not that different. For example, for local dynamic we need the base of the tls (R_TLSLD or R_TLSLD_PC), and the offset of that particular symbol (R_ABS).
Given the similarity, we can just use the expressions instead of having two additional target hooks.