How to build a predictive model where there will be unseen categorical variables in the future
I don't think that's possible. 
However, you can do the following:
Assume that for each race there are 10 horses. Number them from 0 to 9.
Include all the features you want for all the horses, and predict which horse number will win.
For example: 
horse 0: horse_age0, horse_weight0, race_distance0, jockey0 
horse 1: horse_age1, horse_weight1, race_distance1, jockey1 
...
horse 9: horse_age9, horse_weight9, race_distance9, jockey9 
a total of 4*10=40 feature. 
The model should predict one of the classes 0 to 9, indicating the horse number. 
Be careful with this approach though, the ordering of the horses doesn't matter, you should take that into account when training/choosing the model. 
You can simplify the problem by considering a one-vs-one approach, where you evaluate each pair of horses to see which one would win.
Suppose I have built a model to predict the final positions of horses in horse racing using data of races and horses from the past 10 years with the following features:
horse_age, horse_weight, race_distance, jockey
Now, I would like to predict positions in horse racing for the upcoming season. However, during those 10 years, many of the jockeys have retired, and new ones have joined, so there will be jockeys who were unseen by the trained model, unlike horse age, horse weight and race distance.
I would like to know what is a good way to tackle this problem. I realize that one thing I can do is to continually retrain my model to incorporate the new data, but would like to hear more interesting ideas!