BUG: JoinUnit.is_na wrong for CategoricalDtype
- [x] closes #20833
- [ ] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

JoinUnit.is_na is basically checking `isna(self.block.values).all()`.  The check for is_categorical is an attempted optimization bc values.categories is often much smaller than values.  But Categorical represents its NAs in its codes, not in its categories.  So this will incorrectly always return False in the status quo. 

Having trouble coming up with a useful test.  I can adapt a test from test_concat that returns an incorrect answer from is_na, but that does not appear to affect the result of the higher-level pd.concat call.
surpised this doesn't break anything. 