Instead of the "Random [-5/+5] quality" you do whenever farming, I think replanting crops in the same area over and over should reduce the quality of it over time, while boosting the quality of other crops should they be planted instead.
Example: After harvesting Wheat at q10, the next time it is planted and harvested, it is q9.5 . Again, it lowers to q9. However, should turnips be planted at q10, they would be harvested at q11, since the wheat was reduced by 1q, therefore a different crop would get boosted 1q.
I think this can only really work if plant data is tracked per tile (which might be problematic...)
Now to categorize which crops affect which, I propose 2 ways.
1) Rock-paper-scissors: All crops are categorized into groups (Wheat, Barley, and Millet. Carrots and Beetroots. etc.) Each group decreases itself and boosts another group when used.
2) Advanced Rock-paper-scissors: Each crop affects multiple crops at various levels. Example: Wheat negatively affects Wheat (-.5q), Barley (-.3q), and Millet (-.1q), but positively affects Carrots (+.3q) and Turnips (+.5q).