I think that to make position swapping more difficult (I don't want it eliminated) the starting rating of different positions should be greatly reduced. For example:
MLB John Q. Public
MLB rating: 36/97
WLB rating: 34/96
SLB rating: 33/95
LDE rating: 32/87
RDE rating: 32/86
DT rating: 30/81
CB rating: 30/79
FS rating: 31/82
SS rating: 31/82
Instead of this, have the same player look like this:
MLB John Q. Public
MLB rating: 36/97
WLB rating: 28/96
SLB rating: 28/95
LDE rating: 5/87
RDE rating: 5/86
DT rating: 0/81
CB rating: 0/79
FS rating: 0/82
SS rating: 3/82
There is no reason that a college MLB should be able to walk in the the pros and play any position other than LB effectively, or be able to do so for several years. Have the non-major positions grow much slower than their 'natural positions' so that spending a high draft pick on a player you plan to move isn't as inviting. Naturally, intelligence will still determine how fast someone can advance at a different position. To use a real-life example, with Mo Claibourne's well-known lack of mindpower, it would be next to impossible for him to swap to linebacker even if he wanted to, simply because he wouldn't be intellectually capable of the mentality change.
I think this would be an easy fix to implement, and it would make the game more realistic.