There are multiple issues for generals that you run up against playing as the CSA. The Union has similar problems, but they have so many generals it's not as pronounced.
Many of the CSA generals appear in the game at the time that they were promoted to 2-star generals IRL. However, in the game they are only 1-star generals. On top of that, many of the CSA generals do not have 2-star general models, even though they reached that rank historically. Hindman comes immediately to mind. There are at least 25 CSA brigadiers represented in the game that reached 2-star rank historically yet have no model to represent that in the game. I think that's about a quarter of the total available to the CSA. No matter how many battles they win you still can't promote them. Instead they get mythical brigadier generals taking up space, such as Quantrill (barely a captain), John Baylor (colonel) and Barnard Bee (some accounts show him made general only posthumously). The only fix for that is to create new models/units and do all the necessary edits. You can fix this in your single player games but it's more problematic for PBEM.
The other issue is that the promotion/seniority system is flawed and leads to poor gameplay and broken command structures.
2-star Stonewall Jackson is a corps commander and leading a stack that contains 2-star Richard Ewell as a division commander. By chance, their seniority levels are only one point apart. After a battle, Ewell gains XP and seniority points and outranks Jackson in seniority. Now he commands his division and the stack, a de facto promotion that you did not want. This is an extreme example and seems to happen more often with Union commanders, but it's still a problem. *Corps and army commanders should always outrank others of the same rank in the same stack, no matter their seniority level*
US Grant appears on the board in September 1861. As a 2-star. Never mind that he didn't reach major general (of volunteers) historically until after Donelson in 1862. The Union player will immediately send him to destroy whatever little stack he can to ensure he has enough points to get him enough points to command an army. The same will apply to any commander with good numbers, and throws out any of the wrangling the Union had to suffer through because of poor command. The penalties for promoting him over the heads of others don't stack, so as long as he's only offending his immediate superior in rank and that superior doesn't have any political weight, there's no real cost. Since its in the Union player's interest to simply wait and do nothing until Grant and company show up, chances are the competition hasn't advanced much to hurt Grant's chances.
The first example is a bug, the second is poor design. The game is using a one-size-fits-all system for army/corps/division structure but as most people who read this forum know the historical ranking system for both sides doesn't fit into it. CSA: 2-star generals commanded divisions, 3-star commanded corps, full generals commanded armies, and there were some exceptions. Since, the game allows for 2-star generals to command corps (even though that can be disabled easily), a decision was made, probably back in AACW, to keep many of the CSA generals as 1-stars so they cannot command corps. Don't even get me started on the lieutenant and full general CSA ranks. Union only had brigadiers and major generals, but since 2-stars in the game can't command armies, we have faux-lieutenant generals who commanded "armies" during the war (which in many cases were armies in name only).
As a result, you get this *horrendously awful* representation of rank. Sorry. I love this game, but this is one of the most galling things about it.
The seniority system should be divorced from experience points altogether and tied to date of rank. Seniority at rank does not change, but is reset once a new rank is reached. Seniority is used to determine the penalty, if any, of promotion out of sequence, and the penalty should stack past more than one general.
The ability to promote a general should be achieved through one of at least two different ways. One is similar to the way it currently works, only experience levels at a certain rank are stored independently of seniority. Once four (or some other amount, open to debate) experience levels/points/whatever have been achieved the general can be promoted. Once he is promoted, he is given a seniority number one less than the previous bottom-scraper in the barrel of generals, and that seniority remains the same until he hits the next rank, where the process is repeated.
In addition, I should be able to promote a general whenever I damn well please because I'm the bloody president and CiC, and if I'm playing as Lincoln I'm practically a dictator, ffs. For promotions that don't coincide with experience level advancement, there are a limited number of promotions available and the costs (if any) of VP/NM will be increased. Whether ranks can be skipped with no time in service (1-star -> 3-star without any time at 2-star) would be a subject for debate.
Jefferson Davis promoted multiple generals merely as a way to soften the blow of disappointing them in other ways. Polk was promoted to 3-star after Davis wouldn't side with him against Bragg. Theophilus was promoted when he was pushed off to Arkansas. There is plenty of historical precedent for it to exist in the game.
I have modified my own game to include some of these changes, but so far as I know I can't change the promotion system. The best I have been able to come up with is radically altering the seniority numbers. I've complained about this before and the overwhelming opinion was that I should just man up. Even if my proposed solutions don't interest the majority, something should be done to address the imbalances and problems that the current system impose. It isn't fair (to the CSA), fun or immersive.