La réponse à votre question est "oui, mais...".
C'est c'est possible d'avoir un membre appelé Id qui n'est pas mappé à l'élément _id. Par exemple :
public class X {
[BsonId]
public ObjectId MyId;
}
public class Y : X {
public string Id;
}
Cependant, dans une hiérarchie de classes, le membre _id doit être à la racine de la hiérarchie (en d'autres termes, tous les membres de la hiérarchie doivent être d'accord pour utiliser le même _id).