It's a safe thing for both sides.
If you had the rookie contract at 4 years plus the option of a 5th, then the player would be almost halfway into his career before he gets a big hit. That would suck for the player. It would also be a bad situation if your team spends the first pick on a complete bust and has to pay him $5 million plus for five years before you can decline his option.
Having the '2 and 2' is a good compromise. Teams can decline options on bad players after two years, and the good rookies would automatically get bird rights after three years of service, which means they can earn more from their team than any other. Yes, they have to live with four years. But if it's a succesful rookie, bird rights become much more valuble than the present media and fan speculation make it out to be.
What I the NBA, NBPA and the new CBA should add is a 're-negotiation clause' after two years, assuming the option is picked up for a third season. It should basically give the player and his team a chance to do two things;
A. Increase the remainder of the rookie deal anywhere from 1 to 10% from the third year and onwards.
B. Negotiate an extension that would eliminate the fourth rookie salary year, and instead be replaced by the newly long-term contract. However, teams would be losing out on that deal, so the bonus from their end is an automatic team option in the last two years of the players contract and/or an extra year. Meaning if the player goes into such a negotiation, a 7th year can be added to the contract which cannot be done in restricted free agency or in unrestricted free agency. Only the 're-negotiation clause' can add a 7th year.
It needs some tweeking, but I think it's possible to make it more fair for players, while also not ruining the future financial planning of the team.