BUG: DTI/TDI/PI get_indexer_non_unique with incompatible dtype
I'm pretty sure we can share more code here, but PeriodEngine needs some work first.
lgtm. needs a rebase. is this user visible at a high level? e.g. in .loc or someting? >  is this user visible at a high level? e.g. in .loc or someting?

Yes, will update the test introduced in #30446 also needs a rebase hmm this should probably raise a KeyError instead of a TypeError?

```
df = pd.DataFrame(
    np.random.randn(5, 3),
    columns=["a", "b", "c"],
    index=pd.date_range("2012", freq="H", periods=5),
)

df = df.iloc[[0, 2, 2, 3]].copy() 

dti = df.index
tdi = pd.TimedeltaIndex(dti.asi8)  # matching i8 values

with pytest.raises(TypeError, match="is not convertible to datetime"):
    df.loc[tdi]

with pytest.raises(TypeError, match="is not convertible to datetime"):
    df["a"].loc[tdi]
``` > hmm this should probably raise a KeyError instead of a TypeError?
> 
> ```
> df = pd.DataFrame(
>     np.random.randn(5, 3),
>     columns=["a", "b", "c"],
>     index=pd.date_range("2012", freq="H", periods=5),
> )
> 
> df = df.iloc[[0, 2, 2, 3]].copy() 
> 
> dti = df.index
> tdi = pd.TimedeltaIndex(dti.asi8)  # matching i8 values
> 
> with pytest.raises(TypeError, match="is not convertible to datetime"):
>     df.loc[tdi]
> 
> with pytest.raises(TypeError, match="is not convertible to datetime"):
>     df["a"].loc[tdi]
> ```

hmm, yep sounds right thanks