Canvas хранит своё состояние без усилий со стороны программиста. Ищите, где усилия программиста были направлены на то, чтобы НЕ сохранить состояние канвы.
Канвас для растровой графики, не для SVG. Перед использованием в canvas векторную графику нужно будет преобразовать в растровые спрайты. Но проблема у вас не в способе вывода графики, а в способе отсчёта тиков основного цикла. Для организации цикла используйте https://developer.mozilla.org/ru/docs/DOM/window.r... . Чуть более развёрнутое описание: html5.by/blog/what-is-requestanimationframe .