A resposta para sua pergunta é "sim, mas...".
É é possível ter um membro chamado Id que não mapeado para o elemento _id. Por exemplo:
public class X {
[BsonId]
public ObjectId MyId;
}
public class Y : X {
public string Id;
}
No entanto, em uma hierarquia de classes, o membro _id deve estar na raiz da hierarquia (em outras palavras, todos os membros da hierarquia devem concordar em usar o mesmo _id).