Два репозитория точно бред, репозиторий должен увеличивать уровень абстракции, а не уменьшать. Суть репозитория в т. ч. логике должно быть пофиг (относительно) откуда возьмутся данные.
Я делаю так:
В репозитории создаётся один метод getItems(boolean needFreshData, MyCallback mCallback),
Если needFreshData true берём данные с api, иначе репозиторий должен сам решить.
Во втором случае я обычно делаю так: пытаюсь достать из бд, если там ничего нет - запрос на сервер. Ещё можно учесть такие состояния как отсутствие доступа к api и прочие мелочи.
Также, обращаю внимание, что вызов асинхронный и результаты придут в колбеке.