El concepto de capas o objetos dentro de un canvas no existe.
Entonces, si redibujar todo el fondo no es una opcion. Me inclinaria por crear dos canvas, uno con el fondo y otro con los objetos delantes de el. Uno sobre el otro.
Prepare este ejemplo para que vean el concepto.
http://jsfiddle.net/VBfty/
En el pueden ver un fondo invariable de color rojo, que no se redibuja. Y un cuadrado gris, que se va redibujando cada 1 segundo.