This issue (unless my crash was different) seems to be specific to UStaticMeshComponent, which has a custom Serialize function which writes “LODData” directly to the archive. Seems like a kind of ridiculous thing to do, given it’s a UPROPERTY marked explicitly as “Transient”, but it would probably be difficult to remove from the engine at this point.
In my case, I was trying to convert a StaticMeshComponent-derived component to inherit from something else. The workaround for my case was to serialize a dummy TArray in an overridden Serialize() function. This should work as long as the original StaticMeshComponent’s LODData was empty (int32 isn’t the right type, the real struct’s archive function isn’t exported).
For your case (reparenting to UStaticMeshComponent), you might be able to convert assets over by serializing an empty TArray if you’re saving, on the original type (override Serialize()). Re-save all affected assets, then switch the parent class.