Переместите всю логику BackgroundWorker в класс Model и заставьте его выполнять работу асинхронно.Укажите события для уведомления вашей ViewModel о появлении новых записей.
Как правило, ваши ViewModels не должны иметь больших знаний о потоке (кроме, может быть, Dispatcher.Invoke здесь и там).Модель представления должна просто принимать входные данные из представления, вызывать модель и затем обновлять представление с помощью INotifyPropertyChanged.В ViewModel не должно быть много логики.
Возможно, вы также захотите использовать ObservableCollection, но, похоже, вы еще не достигли этого.