Я считаю, что проблема в том, что при получении свойства TurningRadius от объекта Sedan в первой строке
var property = typeof(sedan).GetProperty("TurningRadius");
то, что вы на самом деле получаете, это свойство TurningRadius, объявленное на уровне автомобиля, поскольку у седана нет собственной перегрузки.
Поэтому, когда вы запрашиваете его атрибуты, вы получаете те, которые определены в машине, даже если вы просили не подниматься в цепочке наследования, так как запрашиваемое свойство является тем, которое определено в машине.
Вы должны изменить GetProperty, чтобы добавить необходимые флаги для получения только объявленных членов. Я считаю, DeclaredOnly должен делать.
Редактировать: обратите внимание, что это изменение будет иметь первую строку, возвращающую нуль, поэтому следите за исключениями NullPointerExceptions.