If I understand correctly, not only a minimum but also a MAXIMUM of one field must be filled. What exactly are you checking for in the OnChange microflow? Once you have ever entered some text in B (assuming this is a string field), its value will never be 'empty' again, instead you can check if the text equals '' (2 single quotes, meaning an empty string)
Example: $Object/B != empty and $Object/B != ''
This may be the cause of your problem.
So you want to remove a validation feedback message from an attribute without the user changing the field?
You can try calling a change object on your entity where you put the current value $attrA back into itself. Make sure you don't commit it but do put it on refresh.
Not sure if that'll work but might be worth a try.