It isn't obvious that exists @haystack{qw(aa bb cc dd)} should provide an "ANY" test. Some might think an "ALL" test would be correct. Thus, it definitely doesn't belong in core.
I'd suggest using any for clarity and to remove the need for !! (and the risk that one of your keys might be "0").
use List::Util qw(any first);
my %haystack; @haystack{'aa'..'ff',"0"} = ();
say any { exists $haystack{$_} } qw(aa bb cc dd);
say any { exists $haystack{$_} } qw(zz 0); # OK
say !! first { exists $haystack{$_} } qw(zz 0); # Oops!