I think this thread mixes too many things: Introduction, model life time and "too many items in purchaselist".
First of all, I do not like an availabilty callback at all. The randomness of introduction and availablity is IMO a core part of vehicle gameplay. [0]
Wrt. introduction and depencies between vehicles: Checking the availability of other vehicles is IMO way too complicated. Instead I propose again what I proposed before:
myself wrote:
The randomisation of introduction dates should be changed in a way that it preserves the order of introduction. If two vehicles have the same introduction date in the GRF they are introduced at the same time.
Wrt. making vehicles disappear from the purchase list, to clean it up:The "retire early" property already solves this half. It can be used to completely cut off the randomisation of phase 3 (which is not very useful anyway). So only the random 15 years of phase 2 remain.
Finally, about the "too many stuff in purchase list"-issue: I think it is fundamentally wrong to try to solve this via NewGRFs. (esp when considering "engines never expire") Instead there should be a feature which allows the player to remove (or readd) engines of his own selection to the purchase list. Further reasons to let the player decide are:
* Remove engines of no use for the player. (bad reliability etc.)
* Keep engines the player likes for whatever reason. (e.g. steam-engines

)
* If a player uses multiple engine GRFs, he/she can way better decide which engines are too much, than any GRF could ever.
[0] Just like reliability is also a core part. Sadly too many people play without breakdowns and thus make it totally superfluous to decide between more than maybe 2 engines.