"Enki
From Q2, I think each brand of engine's stats should be locked the entire season for the league you're in, but they can change in between, and independant of each other, so 2 engines could possibly end up with identical stats etc. This of course means that the best engine(s) won't be the same for all leagues at the same time.
I think the relationships aspect of the game will become more valuable as a side effect of this.
This was an idea I'd had wanted to suggest myself, locking the stats for the league over the season, but mine wasn't as nuanced as this. I was going to suggest a pseudo-random change to the suppliers every 1/2/3 months, but in the sense that at each interval, the attributes only change by a maximum of 2, and only in rare cases. I imagine it like a dice roll.
For each attribute, generate two random variables, one a binary true/false, the other an integer from 1 to 10 or something.
[list]
[*]If the binary comes back
true,
increase the value. If it comes back
false,
decrease the value.
[*]If the integer comes back
any number from 1 to 9,
change the value by 1. If it comes back
10,
change the value by 2.
[/list]
Obviously you can play with the possible results to change the probabilities of different changes. This system means that, ideally, at each interval the attributes can't change too much, and would simulate the waxing and waning of suppliers over time, but not change so much that the best engine suddenly becomes the worst, but more drawing the pack closer together, or one supplier pulling further ahead.
For simplicity and user experience, you might want to set it so the values only change between seasons, but then from a technical standpoint you get into "how do you save the data for each league?" and "what happens to users who switch leagues mid-season?" and that gets complicated very quickly.