It's not necessary to do 2 retrieves (as recommended in a comment), I just think your query doesn't do what you think it should do, concerning the 'not' part. You can just negate a Boolean with != true().
I would try rewriting it like
[$Filter/IncludeAge != true() or (Age >= $Filter/AgeMin and Age <= $Filter/AgeMax)]
And change the other part as well of course