Geralmente entre o Usuario e a ViewModelUsuario eu evito usar herança por conta que o modelo Usuario pode evoluir com o tempo. Se, por exemplo, a ViewModelUsuario herda de Usuario, que tem inicialmente login e senha, e assim na view model eu apenas acrescento apenas a confirmação de senha. Só que no futuro se eu aumentar o meu modelo de Usuário colocando uma lista de produtos que ele comprou.Neste caso a ViewModelUsuario passaria a ter esta lista também, o que não faria muito sentido dado que a ViewModelUsuario serve para o cadastro, que é login, senha e confirmação de senha. Por isso que neste caso a relação de herança não faria tanto sentido.
Já quanto a BaseModel, uma das vantagens de se usar ela é que nas classes filhas você não deixa resquícios de bancos de dados dentro dela. Quando usamos algum framework ORM, a maioria das classes precisam ganhar uma propriedade Id apenas para o orm conseguir criar as tabelas e fazer os relacionamentos. Mas Id é coisa de banco, não de orientação a objetos. Pelo menos com a BaseModel isolamos o que é referente a banco num lugar só e as filhas trabalham apenas com composições.
Outra vantagem de fazer a mãe de todos aqueles que vão para banco de dados é que você consegue criar o Dao genérico, que seria uma classe mãe de todos os Daos e já define os métodos básicos como insert, delete, update e busca por Id.