PERF: add support for NaT in hashtable factorizers, improving Categorical construction with NaT
closes #12077 

```
before     after       ratio
[1330b9fe] [404911c6]
17.25ms     1.21ms      0.07  categoricals.categorical_constructor_with_datetimes.time_datetimes_with_nat
```

Cool, kind of a no brainer. 
 perfect example of why we need common NA handling in arrays. had to fix up factorize and rank! for int64
 Yep. I'd be all for 100% bitmasks if it wouldn't cause legacy issues; maybe we'll get there someday 
