1) Не уверен насчет этого.
2) Если вы дублируете код, обычно есть лучшее решение.
Вы можете использовать шаблон синглтона и иметь один класс, содержащий ваши Коллекции. Затем каждая Viewmodel получает доступ к одному и тому же списку. Назовите это DataAccessor или что-то подобное.
3) У меня не было бы ссылок на две разные Viewmodels. Почему бы просто не объединить Viewmodel A и B? Почему они в настоящее время разделены, если они оба имеют дело с ViewA?