일단은 화면에 버퍼링이 걸린다는 부분부터 다시 점검을 해야 할 것 같습니다. 설명의 내용으로 봐서는 UI가 블락을 당하는 듯 한데요, 이게 맞다면 데이터를 가져오는 부분에서 일단 점검을 해보셔야 할 듯합니다.
Firebase의 데이터 구조가 권장하는 flat(자식노드의 레벨이 가능하면 적은)한 형태의 구조인지, 데이터를 가져오는 부분에서 이미 가져온 데이터를 다시 가져오지는 않는지, 그리고 가져오고 나서 데이터를 가공하거나 하는 부분이 시간이 걸리는 작업이고 이걸 메인쓰레드에서 하지는 않는지 체크해 보셔야 겠네요.
제 기억으로는 파이어베이스는 상위 노드를 읽어오면 그 안에 있는 하위노드를 전부 가져오는 걸로 앍고 있습니다. 파이어베이스에서 제공하는 관련 동영상(유투브), 개발자 가이드를 통해서 현재 데이터를 구성하고 처리하는 방식이 적절한 방식인지 확인하시기 바랍니다.
위 부분을 먼저 확인하시고 나서 문제의 소지가 없다면, 로컬 DB를 이용해 캐시를 하는 방법을 고려해 보실 수 있을 것 같습니다.
추가로 데이터를 로딩하는 동안 사용자에게 데이터가 로딩되고 있음을 알려줄 수 있는 ProgressBar나 loading dialog 같은 사용자 인터페이스가 없다면, 이 부분도 추가하시면 좋을 것 같습니다.