BUG: set/dict operations fail when hash collisions with pd.NA occur
```python-traceback
In [1]: import pandas as pd; pd.__version__
Out[1]: '0.26.0.dev0+1155.ged20822a5'

In [2]: {pd.NA, hash(pd.NA)}
---------------------------------------------------------------------------
TypeError: boolean value of NA is ambiguous

In [3]: {pd.NA} | {hash(pd.NA)}
---------------------------------------------------------------------------
TypeError: boolean value of NA is ambiguous

In [4]: {pd.NA: 'foo', hash(pd.NA): 'bar'}
---------------------------------------------------------------------------
TypeError: boolean value of NA is ambiguous

In [5]: d = {pd.NA: 'foo'} 
   ...: d[hash(pd.NA)]
---------------------------------------------------------------------------
TypeError: boolean value of NA is ambiguous
```

The above behavior is due to Python using equality as a fallback when hash collisions occur and our defined behavior of `bool(pd.NA)` raising.  This might be something we have to live with if we want to maintain the current behavior of `bool(pd.NA)`, or at least an immediate workaround doesn't come to mind.

The examples above are admittedly a bit contrived, so I think it'd be fairly rare to see this occur in practice.  My main concern is that this could result in some confusing behavior when `pd.NA` is included in containers, e.g. `set(IntegerArray)` could fail in rare circumstances.

cc @jorisvandenbossche @TomAugspurger 