What are some good models to complement XGBOOST in stacking?
It really depends on how other models behave on your particular dataset, but generally, you should check 2 things:

Predictions from ensembled models are not highly correlated and other models also perform well on your dataset.
It's better to use a model from another family. So if you are using XGboost, its better to add some model like SVM than a catboost (because you want a model with different approach in solving the data, rather then a model with similar approach).

I think this article may give you additional insights about the topic
https://machinelearningmastery.com/stacking-ensemble-machine-learning-with-python/