This was a misunderstanding on my part about the evaluation of logic statements in WAF.
Written out, the logic statement required was: IF request_path AND NOT (header_1 AND header_2)
Where the initial implementation was: IF request_path AND NOT header_1 AND NOT header_2
My desired outcome was achieved by evaluating the presence and values of both header_1 and header_2 in a self contained AND statement within the rule.