Performance Issue probably run out of Ram

1 line at a time would cut more than 1 of those arrays down by a factor of 8 wouldn't it?

Additional: you could process 1 position at a time to store into a 1 line array in the lightUp function and only shift the bits out when that is full. What you do with drawLeds array could simply be a series of function calls to build the line.

I should mention that I find PROGMEM data retrieve then use does work noticeably slower than using data straight from RAM. My 7 line menu print kind of flows onto the Serial Monitor.