You might want to look into RockBox (open source firmware) for the iPod or similar portable music player, it has support for reading the menu for blind users. However the menu is ... quite in-depth ... in places. I suspect it can be simplified...
I would use MPD to play the audiobooks on a RPi. http://www.musicpd.org/
(I'm assuming it will compile on ARM... If not I wouldn't be surprised if someone gets an RPi and makes it work pretty soon after release - I want it to run on an RPi for other reasons.)
This runs in the background and is controlled by a client program, including some console based clients. 'mpc' is a very simple command-line client which you can run like 'mpc play', 'mpc pause', 'mpc stop' etc. and this can be used in a script easily. There's also libmpdclient for writing your own compiled program. 'ncmpc' and 'ncmpcpp' are good console based MPD clients for normal use.
When you change the music library you'll want to issue an update command before doing anything else.
If you're into hardware hacking then a 'keyboard' with few buttons can be made fairly simply. Get a spare (cheap/dirty/broken) USB keyboard, take it apart and remove everything except the circuit board and cable. You'll find two rows of contacts next to eachother which used to make contact with the keyboard matrix. Simply short any wire from one row to any on the other row and it will be like a key was pressed. Find the pair of contacts for the keys you want your program/script to respond to (good luck ) and solder wires to them. These pairs of wires can be attached to any kind of large button you want.
If there's only one apparent row of contacts, have a look on the two sheets making up the keyboard matrix to see where the split actually is. 'xev' is a good program, in X, to use to find which pairs of contacts are for which keys.
(I wrote that before remembering that the RPi has GPIO pins...)
ps. Where could I find a 45 hour MP3 file? I'd like to see if MPD or RockBox can handle one of them!