Series[categorical].align materializes the array of values
```python
In [80]: c = pd.Series(pd.Categorical(['a'] * 100))

In [81]: c.align(c[:5])
```


This eventually hits:

https://github.com/pandas-dev/pandas/blob/2952fbd556e1bc4b5fac70c727652b5419e8e096/pandas/core/series.py#L2559-L2561

We should be able to just do `new_values = self.take(indexer)` for categorical data.