PPLLNS might still be quite hoppable on difficulty borders, as the last [difficulty] shares are still quite long in the pool of last shares (it might however be ok, since they should be worth more anyways) - I'd suggest having PPLNS with share scoring as suggested by Meni:
- N = the multiplier to global_difficulty (for example 2 or
- Record global difficulty for each share.
- Each share gets a score of 1/global_difficulty
- On payouts: Pay the most recent shares whose sum of scores <= N relative to their normalized score (so if N = 5 and the score is 1/10 --> 1/50th of a block payout, meaning currently 1 BTC)