make classic production queue speedup less error prone

- avoid float modifiers because of rounding errors and desync
- try not to crash when the last production building is gone
- don't do LINQ queries on selfsame buildings if not required
Merge pull request #2761 from Mailaender/production-speedup-hotfix

Fixes #2753 ClassicProductionQueue related crashes