Multicollinearity is structural
Why some warning numbers (VIF above 10) are expected in this model and are not a mistake.
When each type gets its own weights, the inputs for one type (f_distance_t, f_directional_t, share_t) all come from the same list of candidates of that stay. So they move together closely (correlation often r = 0.86-0.94). This overlap is called multicollinearity, and it raises the VIF of important terms above 10.
The overlap comes from how the model is built. It does not mean some inputs are useless copies. To push every VIF below 10, some of these separate weights would have to go, and they are the reason this model works better than the simpler ones (Model 4a: alternative-specific parameters). So when weak terms were removed step by step, these important terms were protected (Stepwise VIF elimination).
One kind of overlap is a real problem: an ASC term (a fixed extra value per type) that copies an input which barely changes within its type (Model 5: alternative-specific constants (rejected)).
Visible in Final model correlation matrix. Part of Calibration.