Hola:
Te propongo una solución un poco híbrida... y se trataría de algo en lo que "estarías como pez en el agua"
En vez de hacer varios botones, podrías hacer imágenes de 1 pixel de anchura, la altura de los botones y una transición (loop=1) del formato inicial al final... y viceversa...
Un rollover con transición, puedes verlo en la página de mi perfil... con el mouseover paso de una imagen estática a una imagen con morphing (supongo que habrás trasteado cosas así...)
En tal caso en vez de cambiar una imagen, habría que cambiar la imagen de fondo... algo así:
onmouseover="this.style.backgroundImage = 'fadeIn.gif'"
onmouseout="this.style.backgroundImage = 'fadeOut.gif'"
Son tan solo unas ideas...
Saludos