See http://git.musicpd.org/cgit/master/mpc.git/tree/src/idle.c for a small example of how to wait for a change to happen.
Probably not much effort, as far as I can tell, you'd only need to replace line 146 in main.cpp (usleep(500000);) with code handeling idle.
When the "player" event happens, update.
Since that'd mean mpdas gets changes instantly, it'd update a little bit faster and do less work while waiting.