I mean it is expensive, but the 401k can be better than the pension, if companies put their money where their mouths are. I mean if you want to keep employees, the first thing to do is pay them 8k a year over their typical compensation and let them pick their own healthcare.
Next, you match up to the maximum amount of employee contributions of $23k. Or Fidelity pays their employees a 2X match up to 100% their employees maximum contribution. That is some serious money. My buddy that is higher up in their construction arm, says he put in $22,500 last year and they added 45k to it. He says there is no way he is ever leaving.
My company follows that prescription, although not 2X contributions. Profit sharing and semi annual bonuses pretty much keep everyone happy.