The behaviour you desire is NOT to Clear Existing Tags. If MB has no data for a certain tag, Picard will keep it, and if there is, it will overwrite it’s content. But it’s not possible to decide automatically what’s erroneous junk and what should be preserved.
BTW, if information is not available on MB, you should add it
Just an idea, but try this script (set it in Options > Scripting):
The idea is that since the tags in the files are made available in scripting %composer% will have a value if it is in the file tags or has a value provided by MB. By using $set explicitly you make this value part of the new metadata Picard will write. Hence existing value from the file will be written again, but MB data will overwrite it.
I haven’t tried it myself, but let me know if it works. Instead of $set you might want to use $setmulti if you want to preserve multi value tags.