Идея о том, что синглтоны являются анти-паттернами и их следует избегать любой ценой, переоценена. ИМХО, вы можете использовать синглтоны и легко тестировать их, используя DI и макеты.
В вашем случае гораздо более простым решением является использование одноэлементного сервиса для управления жизненным циклом Firestore.
Выполнение этого во ViewModel приведет к дублированию кода и не имеет смысла, поскольку не связывает вид и модель с заданием ViewModel.