Если вы откажетесь запускать код .net только потому, что он использует отражение, у вас останется очень мало битов для запуска.Использование отражения не означает значительное снижение производительности.Если вам не нужно выполнять какой-либо код отражения в узком цикле или работать на маломощном процессоре (возможно, на мобильном), или он используется неправильно, отражение обычно не оказывает существенного влияния на общую производительность приложения.Несмотря на это, отражение обычно кэшируется, поэтому оно происходит только один раз за операцию.В конкретном случае NHibernate.Validator большинство (все?) Работ по отражению выполняются только при запуске.
Если вы знаете, что предъявляете особые требования к производительности, измерьте их, как и все остальные.