The trick is to get the validation conditions on the transform to be lenient.
The following validation conditions are available for a transform (these are stored in the transform's summary information stream):
You would basically want to not validate any of the transform validation conditions that ensure product code, upgrade code, product version, and product language matching.
Depending on the types of changes you are making, you may want to suppress all of the error conditions as well to ensure that the transform can be applied without failure.
More specifics on the transform summary information stream can be found in the MsiCreateTransformSummaryInfo API documentation.
A no validation suppress all error transform would be generated using something similar to:
msitran -g simple.msi simple2.msi simple.mst abcdef
Content credit belongs to