BUG: cannot stack MultiIndex that contains duplicates
- [x] I have checked that this issue has not already been reported.
- [x] I have confirmed this bug exists on the latest version of pandas. (1.3.1)
- [ ] (optional) I have confirmed this bug exists on the master branch of pandas.

---

#### Code Sample, a copy-pastable example

This succeeds:
```python
pd.DataFrame(columns=['A', 'A'], index=['T', 'U']).stack(dropna=False)
```

But this fails ("cannot reindex from a duplicate axis"):
```python
pd.DataFrame(columns=pd.MultiIndex.from_tuples([
    ('A', 'B'), ('A', 'B')
]), index=['T', 'U']).stack(level=[0, 1], dropna=False)
```

If you remove the duplicate entry then it does of course work:
```python
pd.DataFrame(columns=pd.MultiIndex.from_tuples([
    ('A', 'B'), ('A', 'C')
]), index=['T', 'U']).stack(level=[0, 1], dropna=False)
```

#### Problem description

I think you should be able to stack `MultiIndex` axes that contain duplicates, since you can stack `Index` axes that contain duplicates. Conceptually a `MultiIndex` is very similar to a `Index` of tuples so it's surprising that they differ in this respect.

#### Expected Output

The failing example should stack as follows:

```python
T  A  B    NaN
      B    NaN
U  A  B    NaN
      B    NaN
dtype: object
```

#### Full backtrace

<details>
~\Anaconda3\envs\py3_2\lib\site-packages\pandas\core\frame.py in stack(self, level, dropna)
   7206 
   7207         if isinstance(level, (tuple, list)):
-> 7208             result = stack_multiple(self, level, dropna=dropna)
   7209         else:
   7210             result = stack(self, level, dropna=dropna)

~\Anaconda3\envs\py3_2\lib\site-packages\pandas\core\reshape\reshape.py in stack_multiple(frame, level, dropna)
    571         for index in range(len(level)):
    572             lev = level[index]
--> 573             result = stack(result, lev, dropna=dropna)
    574             # Decrement all level numbers greater than current, as these
    575             # have now shifted down by one

~\Anaconda3\envs\py3_2\lib\site-packages\pandas\core\reshape\reshape.py in stack(frame, level, dropna)
    498 
    499     if isinstance(frame.columns, MultiIndex):
--> 500         return _stack_multi_columns(frame, level_num=level_num, dropna=dropna)
    501     elif isinstance(frame.index, MultiIndex):
    502         new_levels = list(frame.index.levels)

~\Anaconda3\envs\py3_2\lib\site-packages\pandas\core\reshape\reshape.py in _stack_multi_columns(frame, level_num, dropna)
    670             chunk = this.loc[:, this.columns[loc]]
    671             chunk.columns = level_vals.take(chunk.columns.codes[-1])
--> 672             value_slice = chunk.reindex(columns=level_vals_used).values
    673         else:
    674             if frame._is_homogeneous_type and is_extension_array_dtype(

~\Anaconda3\envs\py3_2\lib\site-packages\pandas\util\_decorators.py in wrapper(*args, **kwargs)
    310         @wraps(func)
    311         def wrapper(*args, **kwargs) -> Callable[..., Any]:
--> 312             return func(*args, **kwargs)
    313 
    314         kind = inspect.Parameter.POSITIONAL_OR_KEYWORD

~\Anaconda3\envs\py3_2\lib\site-packages\pandas\core\frame.py in reindex(self, *args, **kwargs)
   4174         kwargs.pop("axis", None)
   4175         kwargs.pop("labels", None)
-> 4176         return super().reindex(**kwargs)
   4177 
   4178     def drop(

~\Anaconda3\envs\py3_2\lib\site-packages\pandas\core\generic.py in reindex(self, *args, **kwargs)
   4809 
   4810         # perform the reindex on the axes
-> 4811         return self._reindex_axes(
   4812             axes, level, limit, tolerance, method, fill_value, copy
   4813         ).__finalize__(self, method="reindex")

~\Anaconda3\envs\py3_2\lib\site-packages\pandas\core\frame.py in _reindex_axes(self, axes, level, limit, tolerance, method, fill_value, copy)
   4014         columns = axes["columns"]
   4015         if columns is not None:
-> 4016             frame = frame._reindex_columns(
   4017                 columns, method, copy, level, fill_value, limit, tolerance
   4018             )

~\Anaconda3\envs\py3_2\lib\site-packages\pandas\core\frame.py in _reindex_columns(self, new_columns, method, copy, level, fill_value, limit, tolerance)
   4059             new_columns, method=method, level=level, limit=limit, tolerance=tolerance
   4060         )
-> 4061         return self._reindex_with_indexers(
   4062             {1: [new_columns, indexer]},
   4063             copy=copy,

~\Anaconda3\envs\py3_2\lib\site-packages\pandas\core\generic.py in _reindex_with_indexers(self, reindexers, fill_value, copy, allow_dups)
   4875 
   4876             # TODO: speed up on homogeneous DataFrame objects
-> 4877             new_data = new_data.reindex_indexer(
   4878                 index,
   4879                 indexer,

~\Anaconda3\envs\py3_2\lib\site-packages\pandas\core\internals\managers.py in reindex_indexer(self, new_axis, indexer, axis, fill_value, allow_dups, copy, consolidate, only_slice)
   1299         # some axes don't allow reindexing with dups
   1300         if not allow_dups:
-> 1301             self.axes[axis]._can_reindex(indexer)
   1302 
   1303         if axis >= self.ndim:

~\Anaconda3\envs\py3_2\lib\site-packages\pandas\core\indexes\base.py in _can_reindex(self, indexer)
   3474         # trying to reindex on an axis with duplicates
   3475         if not self._index_as_unique and len(indexer):
-> 3476             raise ValueError("cannot reindex from a duplicate axis")
   3477 
   3478     def reindex(self, target, method=None, level=None, limit=None, tolerance=None):

ValueError: cannot reindex from a duplicate axis
</details>

#### Output of ``pd.show_versions()``

(This from an earlier environment because my Pandas 1.3.0 environment doesn't have a working `show_versions`)

<details>
INSTALLED VERSIONS
------------------
commit           : 2cb96529396d93b46abab7bbc73a208e708c642e
python           : 3.8.10.final.0
python-bits      : 64
OS               : Windows
OS-release       : 10
Version          : 10.0.18363
machine          : AMD64
processor        : Intel64 Family 6 Model 85 Stepping 7, GenuineIntel
byteorder        : little
LC_ALL           : None
LANG             : None
LOCALE           : English_United Kingdom.1252

pandas           : 1.2.4
numpy            : 1.20.2
pytz             : 2021.1
dateutil         : 2.8.1
pip              : 21.1.1
setuptools       : 52.0.0.post20210125
Cython           : 0.29.23
pytest           : 6.2.3
hypothesis       : None
sphinx           : None
blosc            : None
feather          : None
xlsxwriter       : None
lxml.etree       : 4.6.3
html5lib         : 1.1
pymysql          : None
psycopg2         : None
jinja2           : 3.0.0
IPython          : 7.22.0
pandas_datareader: None
bs4              : 4.9.3
bottleneck       : 1.3.2
fsspec           : 0.9.0
fastparquet      : None
gcsfs            : None
matplotlib       : 3.3.4
numexpr          : None
odfpy            : None
openpyxl         : 3.0.7
pandas_gbq       : None
pyarrow          : 3.0.0
pyxlsb           : None
s3fs             : None
scipy            : 1.6.2
sqlalchemy       : None
tables           : None
tabulate         : None
xarray           : 0.18.0
xlrd             : 2.0.1
xlwt             : None
numba            : 0.53.0
</details>
