As an aside, the fact that translators just work on getId() is a mistake and, in general, it would be better practice for our translators to looked something like this:
(This is a pattern we would need to add to basically every translator that calls setUuid()).
However, I think you may have stepped over the line that calls JsonPatchUtils.apply() a little too quickly. In particular, inside that call, we first translate the resource to a JSON document and later parse the modified JSON back into a FHIR resource. I’m guessing the Patient/ part gets added in one of those two steps (this also might help to explain why this didn’t happen with other resource types).
However, I suppose the root cause doesn’t really matter. If we change the translator as I suggested here, I think the issue will go away.