Предлагаю такой простой алгоритм.
Сначала выясняем, какая строка больше, сравнив length1 и length2. Какая больше, в той и будем растворять.
Например, путь length1 >= length2 (пример с "hello world"). Тогда посчитаем, сколько символов чередовать: x = Math.round(length1/length2). Далее в цикле берём x символов из исходной строки, затем 1 символ из строки с невидимками. И так до конца, пока строки не кончатся. В цикле склеиваем эти кусочки в результирующую строку.
Если же length1 < length2, то всё то же самое, только берём 1 символ из исходной и x из строки с невидимками.
Конечно, если нужно как-то по-особому размазать, то алгоритм нужно будет улучшить немного, но суть будет та же.