It seems to me that the game engine is encouraging team owners to convert players to WR and CB as the downside doesn't outweigh the upside. There is (my opinion) a clear imbalance in the importance of speed and to a lesser extent acceleration over technique attributes.
If that is how you want the game to play then you have to put in either minimum roster spots by position e.g. 2*QB, 2*RB, 1*FB, 1*TE etc OR, maximum numbers by position e.g. 4*QB, 4*RB, 2*FB, 4*TE etc.
Another possibility is to introduce "hybrid" players e.g. "Scatback": generally a pass catching RB who can run the ball. "Possession" receiver: A large physical TE/WR who can use his strength and route running to box out a defender. An "Edge Rusher" a DE/LB crossover used primarily in passing situations.
Perhaps the depth chart should have a finite number of slots for depth at each position e.g. QB*3, RB*3, HB*3, FB*3, TE*3 - Scope here to have slots for pass catching TE and blocking TE, Separate WR list to Split End, Flanker, Slot, wr4, we5 with 3 options and at each .
On D the positions could be RDE, RDT, NT, LDT, LDE, ROLB, RILB, MLB, LILB, LOLB, CB1, CB2, SS, FS, CB3, CB4, CB5. Allowing you to play players in the desired positions more often.
Players that don't play or train in a position should lose it as an option to convert to after a while as well. Too many players are listed with 10+ possible positions (it's too many)