Да, drawRect может и будет вызываться в нескольких потоках (протестировано на OS 4.2).
Это поведение менее очевидно, если ваш рисунок достаточно быстр, чтобы опередить появление новых жестов масштабирования, так что ваше приложение может работать нормально, пока не будет протестировано с быстрым вводом жестов масштабирования.
Одна из альтернатив - сделать вашу модель поточно-ориентированной.
Если потокобезопасность достигается за счет синхронизации большей части доступа к модели данных к одному потоку рисования за раз, тогда вы могли бы сделать то же самое, чтобы сменить тело drawRect на что-то вроде @syncrhonize (self), на работу.
Я не нашел способа запросить, чтобы CATiledLayer использовал только один фоновый поток.