What prevents one from replaying a BCC transaction by nulling the SIGHASH_FORKID bit?
First of all the sighashType field with (or without) any bit fields is used in source data while for signing. The signature does not sign itself, but it signs sighashType. So, changing sighashType invalidates signature.

Second, the data for signature is created in different manner.