Training time for units are dependent on those parameters
Base training time (unit), Building (level), Realm bonus, Citadel bonus(IF(Cit lvl=25, 25%, 0%), Building bonus(IF(building lvl=25, 25%)), Mastery bonus
And the current formula is
Effective training time(unit) = Base training time(unit)*Building(level)/(1+ Realm bonus + Citadel bonus + Building bonus + Mastery bonus)
As you can see from the formula, each bonus affects the other negatively and at one point it is not even worth to do it.
I would propose to change this formula to a more independent one
Effective training time(unit) = Base training time(unit)*Building(level)/((1+Realm bonus)*(1+Citadel bonus)*(1+Building bonus)*(1+Mastery bonus)
This way none of the bonuses affect each other and total % drop remains linear at all levels and bonuses.
Please note that as time passes all of those parameters (maybe except mastery bonus) tend to go higher and start to punish each other. Although none of the buildings were oblidged to be built to highest level, the motivation to build them must stay as a good goal.