BUG: take nans correctly into consideration in complex and tuple
- [x] closes #41836
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [x] whatsnew entry

NaNs as Float are already handled correctly (all nans are the same equavalency class), this PR adds similar functionality for complex and tuple.

It doesn't handle `frozenset` (see also discussion in #41836) because it would require to duplicate a lot of code/internal details from setobject.