Нет, не будет. Зачем тебе для каждого отдельного игрока, открывшего карту, заново просчитывать координаты для текстдрава? Их просчитываешь в одном месте и там же создаёшь, а игрокам лишь отображаешь созданный ранее текстдрав.
Наверное, тут всё же лучше будет сделать итератор на игроков, открывших карту + один таймер, в котором сначала будут создаваться текстдравы, а следом будет идти foreach-цикл на отображение созданных текстдравов игрокам. Можно, конечно, заморочиться и сделать всё на индивидуальных таймерах, выделив отдельный таймер на пересоздание текстдрава, но не думаю, что подобное усложнение кода сильно улучшит ситуацию с быстродействием (возможно, даже наоборот).
Цвет иконок спокойно изменится при помощи TextDrawColor. Изменения не отобразятся у игрока, пока ты по новой не покажешь текстрав игроку.
То бишь, достаточно сделать такой код:
И игроки будут видеть только тот цвет иконок, который они должны видеть.