I may be missing something, but I don't see how this technique is useful. The point of atomic cross chain transactions is that neither party needs to trust the other one. The 2nd party(who does not have the secret) is willing to create an AT that releases the funds when a secret he does not know is provided because he knows that when it is released he will be able to see and use that secret to release the other AT. If the hashes in the ATs are different, he no longer has a guarantee that his AT being released will provide him with the required information to release the other one.
A possible way to allow different hashes would be to use ATs that check sha256(salt + sha256(secret)) with a different salt for each AT, since the creator can reveal sha256(secret) to the 2nd party before the ATs are created to prove that the same secret will release both ATs, however since the same secret would still be used for both ATs, there would still be a clear link.
It seems to me that this would require one party to be trusted, in which case it offers no advantage over sending ordinary transactions.
EDIT: After thinking more about this, I think this might be doable without links with an extra release condition, such as the following scheme:
Party1 makes secret1 and secret2.
Party2 makes secret3.
Party1 calculates sha256(secret1) and sends it to Party2.
Party2 combines it with secret3 to calculate sha256(secret3 + sha256(secret1)) and sends it to Party1
Party1 creates an AT that releases on either secret2 or (secret1 with secret3).
Party2 creates an AT that releases on secret1.
Party1 releases Party2's AT using secret1.
If Party1 is honest, Party1 provides Party2 with secret2 which can be used to release Party1's AT without leaving a link to Party2's AT.
If Party1 is dishonest and does not provide secret2, Party2 can still retrieve their funds with secret1 that was used to release their AT along with secret3, however there will be a link left in the blockchain, as both ATs will have received secret1.