Вопрос решен. Сделал почти так как описывал в вопросе но еще лучше. Дело в том, что для каждого "Таргета" (Target) можно указать какие классы будут включены в него.
Поэтому решение у меня получилось следующее:
Создан 1 файл проекта. В этом проекте создано 3 отдельных таргета. Первый таргет содержит классы только для работы с API, второй все класы предыдущего таргета плюс свои классы, и так далее.
По сути каждый таргет - это независимая и самодостаточная библиотека. Разница лишь в количестве классов внутри.
Указать какие файлы включаются в Target можно в его свойствах во вкладке Build Phases.