BUG: Bug in MultiIndex.has_duplicates when having many levels causes an indexer overflow (GH9075)

closes #9075 
given that we have integer labels, I _think_ it will be more efficient if we keep working with the labels. 

I particularly like how [`get_compressed_ids`](https://github.com/pydata/pandas/commit/c934e02da0a8f988c56310c2ca29fdb492c94c83#diff-b5797ee3e3b48ff9d21946588c388319R397) handles this. The difference here is that `has_duplicates` does not need _compressed_ ids and `-1` labels should be handled differently.