Note: this answer assumes the employee only has 4 years of experience (based on the question wording) without much leadership experience yet.
Experience and technical chops / productivity aren't the same thing
The employee in question sounds a lot like me when I first started out, though I wasn't as much of a technical superstar, nor did I resort to insubordination when my fast-track promotion hopes were dashed. What I learned, and what most junior engineers learn the hard way as they gain experience and become senior engineers is that technical prowess and productivity cannot substitute for experience. It made no sense to me. I thought I was smart, was good at what I did, and had ambition and initiative; wasn't that enough? What I didn't learn for quite a few years was that experience provides you with many important soft skills that are pretty much impossible for most of us to acquire any other way:
- Understanding of risk management: how to properly assess risk, when to take risks, and when to avoid risks;
- How to deal with others: dealing with your peers, subordinates, and superiors;
- How to manage a schedule: delivering on time, even if it means cutting corners (within company policies on quality; i.e. the iron triangle);
- Understanding your company's organizational structure;
- Understanding your company's own unique internal politics and policies;
- Balancing theoretical correctness with project requirements: sometimes the "correct" design pattern isn't best for a project;
- In general how to avoid common mistakes
Not only are these skills difficult if not impossible to acquire without experience and not at all the same as technical prowess or productivity, but hiring managers have to consider risk when making hiring and promotion decisions. It's risky to assume that someone without experience is ready for leadership. Based on the behavior described in the question, it seems like the employee in question has not mastered these soft skills--in any case they don't know how to deal with their superiors in a constructive way or how to demonstrate that they already have the soft skills necessary to lead (e.g. they could show how leadership activities on their own time demonstrate the skills needed for a leadership role in the workplace).
Leaders must have experience
Leaders must have a wide variety of soft skills beyond technical chops and productivity, and unless the candidate in question is a social savant, experience is how these skills are acquired. This is why minimum experience requirements are used, and why it's not a good idea to put a junior engineer in a leadership role or to promote too soon.
In addition, leaders need experience leading at the level of responsibility that their role requires. So 10 years of engineering experience as an individual contributor doesn't qualify someone to become CEO. It does however likely qualify them to become a team lead, and after a few years of success as a team lead, they could climb a level, and after a few years climb another, and eventually possibly reach the CEO level if they demonstrate success in leading increasingly large teams and impactful projects. There are always exceptions, but exceptions are inherently risky. This is why experience is so valuable and so important.
Deal with the insubordination immediately
It's understandable that your subordinate is upset, but you do need to deal with the insubordination right away. It's okay for the person in question to stop doing unpaid overtime (it's better actually; why let them burn themselves out?), but it is not at all okay for them to be undercutting you to the rest of your company. Why do I say this? Based on this section from the question, specifically the part that I've marked in bold:
We've had a serious problem with him this month: since a formal meeting where he's noted he's not happy being magically promoted on a whim, he's made a point of cutting overtime to nothing, focusing on his personal blog/LinkedIn to show off his knowledge, focusing on generic skills/abilities (at the expense of company-specific skills/technologies) and encouraging other engineers to do the same. This has caused a lot of disruptions in the company, and I'm receiving recommendations to encourage this millennial to quit. How do I straighten out this formerly useful employee? He has accrued 2 years of severance in lieu of overtime (due to unique circumstances), and senior management (on principal) doesn't want to pay $700,000 to "fire" someone.
It looks like the employee has done more than simply become disillusioned and stop volunteering their time, which would be totally understandable and 100% okay. The problem, and where it looks like it became insubordination, is when the employee started "encouraging other engineers to do the same" in a way that "has caused a lot of disruptions in the company" (a company of 5,000+ employees). While we don't have all the info, it sounds this this employee is making big waves in the company, which goes way beyond simply being disgruntled and likely crosses the line into insubordination. Honest, natural water-cooler conversations about problems in the company are normal and okay. Going around the company "spreading the word" to encourage disloyalty to the company is not okay (e.g. "the company doesn't care about you!" (probably true, but not good to go around saying); "polish up your resume like I'm doing--this place is a career-killer!"; etc.).
If this assessment is correct, it has to stop now or else the engineer in question needs to be let go. I would recommend a gradual escalation: start with a one-on-one with the engineer, and escalate from there only if needed. Talk to your higher-ups to find out the best process for your company to make sure you protect your company legally and follow all applicable laws. But bottom line, don't tolerate insubordination. It undermines your authority and can destroy your company.
Some people aren't comfortable with my use of the word "insubordination" here, and maybe they're right--I may be stretching the word to fit a non-standard definition. But regardless there seems to be a real problem related to loyalty and submission to authority. I'm seeing this not as overt insubordination--overtly disobeying an order, but rather as covert insubordination--obeying orders to the letter while working against their spirit by working actively against company interests. The latter is actually much more dangerous than the former, so in my view is a very dangerous form of insubordination.
NOTE: Of course if the company is in the wrong here and has built its business model around predatory treatment of employees by requiring frequent unpaid overtime, and the employee is doing everything right, but the example of one employee bucking the trend of killing themselves for the company is causing a ripple effect that's hurting the company's bottom line, then it's clear that this is not a case of insubordination, and the company should be dealt with, not the employee. Likewise if the company has crossed serious legal lines, the employee may be acting as a whistleblower of sorts, and could be in the clear ethically and morally. But based simply on the info in the question, none of these sound like they're the case.
Help the employee grow leadership skills
Assuming you resolve the insubordination without having to terminate the employee*, help them grow in their soft skills. Provide training in people skills and project management. Carefully explain to them the importance of soft skills in management. Monitor their progress, and when and only when they are ready, consider them for a promotion to leadership, but start small: don't launch them straight to director. Put them in charge of a small team over a low risk project or task first. See how they do. See whether they like it. See how others like working for them. This also gives them a chance to learn and make mistakes without those mistakes becoming career-limiting, and also keeps them from getting stuck in a high position if they're not suited for it but don't mess up enough to get fired or demoted. If they do well, consider moving them higher. If not then move them back down (if you can).
*NOTE: Only take these steps if you feel your employee was acting out of ignorance and has fully learned their lesson and repented, and thus can be trusted. If not, they probably shouldn't stay with the company, let alone be trained for management. The higher someone is in the company, the more power they have for harm. Don't give that power to someone who has undermined the company in the past and who you feel you can't trust not to do it in the future.