PERF: Improve duplicated perf
- [x] closes #10235
- [x] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

`Index/Series.duplicated` now uses dtype-based logic. Also skip algorithm if `Index.is_unique` is `True` (expected to be cached in practical situation).

**asv:**

```
   before     after       ratio
  [bb6b5e54] [16c6da4f]
-   34.41ms     4.69ms      0.14  algorithms.algorithm.time_int_duplicated
-   53.77ms     5.59ms      0.10  algorithms.algorithm.time_float_duplicated
-   60.22ms    40.20μs      0.00  algorithms.algorithm.time_int_unique_duplicated
SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
```

**NOTE:** can create template for htable after #13716.

## [Current coverage](https://codecov.io/gh/pydata/pandas/pull/13751?src=pr) is 84.58% (diff: 100%)

> Merging [#13751](https://codecov.io/gh/pydata/pandas/pull/13751?src=pr) into [master](https://codecov.io/gh/pydata/pandas/branch/master?src=pr) will increase coverage by **<.01%**

``` diff
@@             master     #13751   diff @@
==========================================
  Files           141        141          
  Lines         51233      51258    +25   
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
+ Hits          43331      43356    +25   
  Misses         7902       7902          
  Partials          0          0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last update [2c047d4...12fb5ac](https://codecov.io/gh/pydata/pandas/compare/2c047d4fbe88e7462ec82314f58d014e7b0ad54e...12fb5ac31cf3f86232be9c6617ead0ce25a33f69?src=pr)
 Updated the bench.`algorithms.algorithm.time_int_unique_duplicated` now benchmark under `is_unique` is once cached.
