Memorize

What I would do first is to make a class that can deal with buttons. Since the edge detection is somewhat difficult (with the bouncing), you could make one class that deals with all of it, with methods like:

void read();
bool transistioned();
bool high();
bool rising();
bool falling();
bool toggled();
void setToggle(bool toggled);
int pressLength();

Then you'd make 15 instances of the class (one for each button) and use the appropriate method to do the transitions.

Once you have something to read the buttons correctly, you'd write your main loop. In it, you'd check toggled() to see if you're currently writing, turn on the LED, and then see if a button has gone high that was not before (with rising). If it was, then you add it to the appropriate position on the EEPROM. Otherwise, you don't do anything, and loop over again.

Of course, that's just how I would do it -- it may be a little over your head. I'm having trouble thinking of something "simpler" though.