It seems to be an import pipeline bug. Photos does a lot of extra work on import (merging RAW+JPEG pairs, generating previews, database indexing, optional deletion), so my guess is a concurrency bug where a buffer gets reused or a file handle is closed before the copy finishes. Rare, nondeterministic corruption fits the profile.
Maybe bad RAM flipping bits? Edit: Nevermind, the contents are vastly changed. This is like a different stream of input got used, or a buffer was written over with contents from another image.
”Glad” to see it was an actual bug.