String dtype: fix alignment sorting in case of python storage
Follow-up on the implementation of the object-dtype version of the NaN string dtype in https://github.com/pandas-dev/pandas/pull/58451. From expanding test coverage for this dtype in https://github.com/pandas-dev/pandas/pull/59437, there were a lot of alignment failures:

```
In [1]: pd.options.future.infer_string = True

In [2]: a = Series([1, 1, 1, np.nan], index=["a", "b", "c", "d"])
   ...: b = Series([2, np.nan, 1, np.nan], index=["a", "b", "d", "e"])

In [3]: b.align(a)
Out[3]: 
(a    2.0
 b    NaN
 d    1.0
 e    NaN
 c    NaN
 dtype: float64,
 a    1.0
 b    1.0
 d    NaN
 e    NaN
 c    1.0
 dtype: float64)
```

The above result is not sorted, while normally alignment does sort by default. 

The underlying issue is that `idx1.union(idx2, sort=True)` is not sorting for string dtype (will open a separate issue for that), but the reason we were getting to that code path is because we didn't correctly indicate we can use the faster libjoin for this dtype.

xref https://github.com/pandas-dev/pandas/issues/54792
Thanks @jorisvandenbossche 