People asked me to make a thread on this here, so here goes.
Animals should have attributes like dwarves. Each species should have a set of average and standard deviations. These could be further divided by sex as needed. So for example yaks bulls could have 1500 +- 200 strength and yak cows could have 1400 +- 100, or whatever. These values should then be used to handle trainability (and anything else). Here you could set up some equations for various situations (trainability, how quickly the animal reverts, etc) based on the needed attribute values, and set up the equations such that lower attribute animals would take increasingly longer time/effort to train (here trainer ability also plays in of course), to the point where an animal whose required training time exceeds its lifespan, has effectively been given a "can not train" flag. A slightly modified set of equations could be used for war-training, with more stringent requirements. Ultimately, an animal's attributes would be to some randomized extent, inheritable through breeding.
In this way, trainability and such is an emergent property rather than an explicit (and often arbitrary) flag set in the creature's raws. The natural but controlled randomisation on the averages, would make some species more or less suitable for training, but with careful work and time expenditure, the player could take an unruly animal species and move it towards usefulness in battle. Different castes could even emerge, both thru breeding and through any sexual differentiation in the raws.
Obviously, some of the more glaring bugs in involved with war animals would need to be resolved to make full use of any of these changes.