As an attorney, I probably read fewer cases than I did in law school. At least, fewer when it comes to decisions of consequence. There are a couple of reasons for this: first, I read cases for work so reading cases for pleasure ain't fun; and, second, Supreme Court decisions are ridiculously long. So, let me first say that I haven't bothered to read the opinion of the Supreme Court with regard to corporate political spending but I am bothered by it.
Corporations are not natural born anything - they're the creation of lawyers and legislatures around the world. As economic actors, corporations give investors the ability to experiment with new ideas without putting too much of their personal wealth at stake. That's a good thing. But, corporations exist only so much as Congress lets them exist. If Congress passed a law, and the President signed this law, that eliminated all corporations tomorrow, all corporations would cease to exist because their underlying foundation - legal recognition - would cease to exist. Corporations would become essentially partnerships with each shareholder becoming a proportionate shareholder. The protections from company debt would be eliminated, and the partners would put their own fortunes on the line (as opposed to their share prices).
So, if a corporation is created by legislative action, can be eliminated by legislative action, then Congress should have the right to regulate the activities of these entities, including their "right" to free speech. Justice Rehnquist used to say that in the law, you have to take the bitter with the sweet, and here, the bitter is the inability of corporations to spend on campaigns directly, followed by the sweetness of existence. This is in contrast with actual people, who's creation cannot be so determined by legislative action.
So, what can be done? Simple, Congress can redo the legislation prohibiting corporate donations to campaigns, and then add a provision stripping the Supreme Court of jurisdiction to review the law's constitutionality. Since the Constitution grants Congress the power to decide what the Supreme Court's jurisdiction is (except for those provisions expressly provided for in Article III), Congress can tell the Court that its decision is wrong and tell them to go take a long walk off of a short pier.
Of course, Congress is almost completely owned by corporate interests, so this solution is unlikely. Typical.