Меня бы не слишком волновали проблемы с производительностью (Кнут), я бы больше интересовался проблемами тестируемости и управления состоянием в многопоточной среде, в первую очередь, чтобы уменьшить сложность кодирования и обслуживания, что может привести к проект хуже, чем случайные проблемы с производительностью.
Вы не можете смоделировать статику, поэтому код, использующий API, основанный на статических методах, является относительно непроверенным imho. Не совсем то, что вы спрашиваете, но, пожалуйста, подумайте о людях, которые собираются использовать ваш API.
Вы должны уменьшить количество точек, в которых общие данные хранятся среди потоков, до абсолютного минимума. Это уменьшает вероятность проблем с многопоточностью. Вероятно, вы потеряете немного эффективности в этом, но вы значительно выиграете в простоте кодирования и обслуживания. Представьте, как трудно было бы написать и протестировать приложение ASP.NET, если бы все страницы были статичными. Это был бы кошмар. Возможно, вы поймете, что идете по этому пути, поскольку ваш API со временем приобретает новые функции.
Кроме того, используйте достойную структуру DI (я думаю, Unity, может быть, лучшая вещь из P & P).