Sitecore Personalization engine will render the components because both set of rules are being satisfied. As far as I know, Sitecore does not store the information of when a condition has been satisfied because this is executed on the fly during rendering.
If both rules are being satisfied, in order for you to have only 1 set of rules to be rendered, you will need to implement a custom condition. The custom condition will have a global variable that will be shared across those rules.
Example, Rule A has been met, then set the global variable to true. Before having the Rule B to render, you should check if the global variable has been set to true. If yes, then Rule B should not be rendered.
From a previous project, I had make use of the
HttpContext.Current.Items which allows me to pass in the flag.
Note that you can also try to add other conditions whereby you randomly render either Layout A or B if both set of rules are met.