I believe the only solution to the centralization issue is two fold: increase the delegation penalty massively, while simultaneously increase the reward rate massively.
As it stands, right now, the problem is that node security and trustworthiness is a self-reinforcing mechanism leading to further and further centralization: I, as a small holder, will simply delegate my stack to the most secure node, regardless of how many tokens are already staked with it; in fact, not only regardless, but largely BECAUSE there are so many tokens already delegated to it, which implies that many others view it as secure and trustworthy, increasing the probability of it actually being so.
So we need to take a look at the average holder. How could we incentivize he/she to run a node? Under what conditions would he/she be essentially forced to do so? In my view, under the conditions that:
hodling, and not staking, would lead to significant dilution and
delegating is heavily penalized.
Under the conditions above, I would be highly incentivized to run my own node, rather than hold and/or delegate to an existing node. The only way to force one is to increase the rewards massively, above 50% per year guaranteed. The second is self-evident: FORCE the delegation fee to be above 50% or so, and maybe even burn some part of the rewards that would normally go to that delegator
One variant of this would be to scale the delegation penalty with the size of the node: if a node has say t tokens under its control, increase the delegation penalty proportionally to t. Ultimately, however, not sure this will work, as larger nodes will just break up the tokens under their control into multiple nodes and game the system