Here is what you do.
Start your franchise.
Play or sim Spring Training. (DON'T, I repeat DON'T select End Spring.)
Now, before ending the spring, go in and set your lineup/rotations for YOUR team, and any other team you don't want the CPU to make roster decisions for.....INCLUDING sending players down to the minors. Once you have all the teams you don't want the CPU making decisions for set, with ONLY 25 players on MLB, AAA, and AA respectively, then click END Spring Training. For the teams that you have the rosters set, the CPU won't make any roster moves.
The reason this is happening, is because each team has the ENTIRE 40 man roster available in Spring Training. Thus, every member of the 40 Man roster is listed as being ON the MLB team. When you click END SPRING TRAINING, the CPU is sending players down, to get to the 25 man roster limit. In doing so, it is jumbling your lineups. The way to get around this (Its not really getting around it, because, in real life, MLB teams have to get down to a 25 man roster BEFORE the season starts, the CPU is just doing this for manually controlled teams that don't trim their roster) is to set your rosters, and make your cuts, and send downs BEFORE ending Spring Training.
When you think about it, it makes sense, as it mirrors the real MLB yet again.