Genera l'ObjectId in anticipo, usalo nell'inserto e non sarà necessario che il database te lo restituisca. ObjectId non usa un numero di sequenza condiviso per essere univoco, quindi non importa se ne generi uno prima di inserirlo o recuperalo dopo.
public ObjectId createThing() {
ObjectId result = new ObjectId();
BasicDBObject thingToInsert = new BasicDbObject();
thingToInsert.put('_id', result);
//set other fields here
collection.insert(thingToInsert);
return result;
}