Consider extending hashtable-free indexing algorithms for large sorted indexes
See discussion in https://github.com/pydata/pandas/issues/14266.

`IndexEngine.get_loc` currently does lookups without building a hash table for large indices, as does `DatetimeEngine.__contains__`.  `get_indexer`, however, still always populates a table, as does `__contains__` on non-datetime indices.
