It's unlikely that we'd add more generated code to support this use case; code size is something that's watched carefully when making changes to the protobuf library.
However, you can get this behavior by preprocessing the message with reflection; you could iterate over the fields; if a repeated field is set in both the target and the source, then clear the field in the target. You would also need to recurse into nested singular messages. You can then just call MergeFrom() and get the desired output.