Genau - Technischer Hintergrund: SIGHASH_ALL ist Standard für eine normale Transaktion bei Bitcoin und SIGHASH_FORKID ist Standard bei Bitcoin Cash.
Beide signieren alle Inputs.
Wenn sich ein Input ändert, werden die Signaturen ungültig und müssen neu erstellt werden.
Das heißt es reicht ein Input, den es nur auf einer Chain gibt (wird "Taint" genannt), für die Replay Protection.
Und der Input enthält ja nicht die Bitcoin Adresse - die ist also sowieso vollkommen egal für den Replay Schutz, sondern den Hash der vorherigen Transaktion (Transaktions ID) und welcher Output (Nummer) dieser Input in der vorherigen Transaktions war. Diese Daten werden dann von der Signatur geschützt.
Wenn man sich das ganze in Blockexplorern anguckt, sollte man meinen die Adressen wären viel wichtiger, aber tatsächlich sind diese nur eine Abstraktion für uns Menschen und werden auch dort nur genutzt, damit es anschaulicher ist. Tatsächlich bedeuten die Adressen nämlich nur, wie das Feld scriptPupKey im Output der Transaktion zu erstellen ist.
Danach ist die Signatur also nie wieder gültig, weil es die Inputs so nicht mehr gibt, auch nicht auf der anderen Chain.