I have a good idea about how the non-linear sharechain will work, but implementing that hasn't started yet.
I think that sounds awesome. The thing is the disk space for the share chain isn't that big of a deal, it uses no space really compared to the bitcoind blockchain itself. And older shares once expired don't need to be saved forever. If the sharechain can work more similar to a normal PPLNS share database at centralized pools, that'd be a big win for smaller miners. (Some way to accumulate tiny shares without paying them until they exceed the dust level might be useful, but prone to abuse if someone tries to flood the sharechain with changing addresses just to bloat it.)
One option is that all stales still get passed around like valid blocks, and payments are based on all valid + stale blocks. It isn't like bitcoin where we actually need a single chain with a record of transactions. We're only using the chain's POW so we don't have to trust clients on how much work they are reporting.
Another thought on the dust issue for small miners with tiny shares is when they are served work, that work include the prior shares value that was too low to pay. That is, a normal miner finds shares A B and C. When calculating payouts, that miner is going to be paid A+B+C until those shares start to expire off the chain. A small miner finds share A that is below dust level. They don't appear in the Payouts list. However, when serving work to miner A, they are served a share to work on that includes the diff value from share A. When share B is accepted, share A is invalidated and share B has the value of A + B's new work. If B is > DUST, it goes into Payouts list. If not, then when small miner finds C, C will include B and B is invalidated.
The thought for doing DUST this way is the tiny miner can keep building a balance without storing every tiny share on the chain, and their dust won't expire off the chain before it can grow above the payment threshold since the share's age resets on each new share found. If the miner is so small they can't find even a tiny share consistently within the PPLNS window, they they probably need to mine something else.
This might be more appropriate for a pay-once PPLNS structure though and not the traditional PPLNS window p2pool uses now.
(BTW, I've never looked, but p2pool needs to store the block (share chain?) difficulty when work is served so that can be logged on the share chain with the share, and payments based on the diff of work done vs diff of the block, not just the diff of the work done. Otherwise people get unfair rewards around diff changes and the pool is hoppable.)