Trying to reduce dynamic memory use

The first thing you could do is move those big character arrays into flash program memory.

Take a look at "PROGMEM". Some info here:- PROGMEM

That would save you almost 1.5KB of SRAM.

On an aside, this should be 'unsigned long', not 'long':-

long playnext_prevmillis = 0;