Replace the src attribute instead of recreating element

Letting React manage the src attribute meant that if there was a retina
image, the old non-retina element would be destroyed and a new retina
one created causing a noticable blink. Changing the src attribute
directly avoids this.