Pretty much all of these. The first two in particular seem to be next/current gen issues as I swear you could do both on old gen.
It's still such a deep mode but it's a shame you basically have to turn trade approvals on and control all teams during the offseason to get realistic roster construction. I'm sure it's extremely challenging to code this sort of stuff though, especially given the complexities in the real life CBA and the high level strategy involved in building and maintaining a roster.
A great example of this is OKC and all their picks. The CPU doesn't recognise they have too many picks and therefore initiate trades, so once you get 5-6 years in they just go through this cycle of drafting too many players for their roster spots.
There also isn't really CPU trade logic for trading for fit or to save cap space - rather, the CPU trading logic appears to be random and just based on player ratings (eg - 10 games in and the CPU will try to trade Jamal Murray for Jalen Brunson straight up). All proposed trades are pretty much just player for player swaps and not total asset hauls.
Again, I have no idea how you'd code this stuff. CPU transactions just feel so random and often illogical if you don't take over the controls. It feels like this area has been left largely untouched BECAUSE the game gives you the mechanism to take control.
Every year there seems to be young players the CPU just doesn't value and will constantly try to trade, leave unprotected in an expansion draft and doesn't take up team options on. Previously this was MPJ, Rj Barrett, the last couple of years it's been Jalen Duren. The Knicks always try to trade Brunson as well (in one sim he literally won Finals MVP in the first season, then on draft night they tried to trade him for pick 18!).
Agree with the suggestion of being able to include a 4th and even 5th team in trades. Plus would be nice to see 3-team trades come up with CPU vs CPU proposals as well.
It's nice that rookie scale extensions are in the game, but the CPU doesn't use them, so unless you manually do it, all CPU players go into their last year of their rookie deals unsigned every time.