Как заменить все вхождения на различные значения?
Очень просто. Решение «в лоб»:

Разложить число на цифры (в виде массива)
Разложить шаблон на массив кусков (где разделителем будет "#")
Убедиться, что количество цифр и «дырок» - совпадает
Склеить два массива, чередуя элементы (в цикле или нативной функцией)

Как по мне, никакой из пунктов не может вызвать трудности даже у начинающего программиста.

P.S. Есть варианты решения лишь с одним массивом или вообще без них.
Очень просто. Решение «в лоб»:

Разложить число на цифры (в виде массива)
Разложить шаблон на массив кусков (где разделителем будет "#")
Убедиться, что количество цифр и «дырок» - совпадает
Склеить два массива, чередуя элементы (в цикле или нативной функцией)

Как по мне, никакой из пунктов не может вызвать трудности даже у начинающего программиста.

P.S. Есть варианты решения лишь с одним массивом или вообще без них.