TYP: intp in libalgos
- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [ ] whatsnew entry

@jbrockmendel quick question here so I can be consistent with this as well. What's the rationale behind when we use `intp` vs `int64`? Seems like you've mostly been changing arrays responsible for indexing to `intp`, but not others - are there places we should prefer `int64` to `intp` or would the ultimate goal be to transition to always using `intp`? basically any ndarray we want to use as an indexer, e.g. `arr[indexer]` or `arr.take(indexer)` should be intp (because numpy will cast it if it isnt, so we can avoid making a copy)