Isso pode funcionar para você:
// This is your code
// Deserializing the DateTime object
DateTime eventTimeStamp = (DateTime)aDoc[MongoStrings.Log_Field_TimeStamp];
Console.Out.WriteLine("UtcDate: " + eventTimeStamp);
Console.Out.WriteLine("Locale : " + eventTimeStamp.Kind);
// This is new code
Console.Out.WriteLine("LocalDate: " + eventTimeStamp.ToLocalTime());
O raciocínio seria que suas variáveis localTime são definidas exatamente com o mesmo carimbo de hora que a do UTC, você apenas diz que deve ser tomada como uma hora local. Mas essa configuração como hora local não faz conversão de horas, apenas diz que tipo de hora é essa para que outros métodos (como ToLocalTime) saibam o que fazer...
Se você quiser esse horário local em uma variável, pode ser assim:
DateTime localTime = eventTimeStamp.ToLocalTime();
E acho que funcionará sem definir o tipo. Se não, você sabe como definir o tipo ...