I'm going to say that what you want is possible, but would require a bit of system hacking.

Basically what you'd need to do is replace the init that the system currently runs (which just starts the player software I guess) with something that would do something along these lines:

while(true) {
start player
start inetd &
start something to watch the front buttons
}

Since you'd be starting the player software and waiting for it to exit, it would behave just like "normal." When you exit, inetd starts in the background and control waits for your little "button-press" thingie. If you press a button, the "button-press" thingie kills inetd (and any other processes you want) and exits, which would loop back around to the top, starting the player again.

You could probably do all this with a shell script, or be fancy and write a little perl script.

Of course, if the built-in "init" does more stuff, then you'd want to make sure you replicate that functionality as well.