I've done all of that and tried a few other things, like singing the roots. Playing the roots, playing just the 3rds, just the 5ths, just the 7ths, just whatever altered not the chord suggests, then walking, etc. Arpeggiating all the way through is a great exercise.
But, here's what I've been doing lately, which may or may not be good advice, but its really, really helped my playing. I get as familiar with the song as I can and then I just play it. I make sure to hit major milestones and I make sure to perrochially outline some of the more important chords, but I actually ignore or don't concern myself with all of the changes.
For example, if the chord is D-7 - G7 - Cmaj, I might play something like D - A - F up an octave and then just start making my way down to C however my ear tells me too. I started thinking about this after transcribing. I found that I couldn't justify the notes a lot of greats were choosing with my knowledge of theory and so I let go a little bit. If the piano player is making the changes, those chords will still be there, I focus (sometimes) now on making a nice bassline and playing great time, rather than technically knowing all the changes. If the band needs the structure, thats different and I give it to them.
But, if I know the sound aurally, some of that math and spacial relativity are actually keeping me from playing good lines and frankly it's really hard for me to memorize 1,000 tunes that way. But I can sing them.
I'm not suggesting not knowing tunes or playing free behind a hard bop band, but just that for me, giving myself some room to follow my ear has not only expanded my repretoire, but introduced some things to my playing that I don't think I could have learned any other way.
For what it's worth.