IMHO ViewModel должен никогда реализовывать DependencyObject, но вместо этого реализовывать INotifyPropertyChanged (INPC).
Привязка данных к свойствам зависимостей действительно быстрее, чем привязка к INPC, поскольку не требуется никакого отражения, но если вы не имеете дело с sh * tloads данных, это не будет проблемой.
Реализация DependencyObject предназначена исключительно для элементов пользовательского интерфейса, а не для чего-либо еще, а инфраструктура, поставляемая с DP, - это гораздо больше, чем просто уведомление об изменении. Классы ViewModel по определению не ориентированы на пользовательский интерфейс, поэтому наследование DependencyObject является запахом дизайна.