Выяснил, где искать после прохождения тонны кода. строка 1118ish JsonSerializerInternalReader имеет вид:
SetPropertyValue(property, reader, newObject);
и если вы установите точку останова и посмотрите "свойство", вы увидите, какое свойство сериализуется. так как он делает это в порядке строки json, вы можете посмотреть это и увидеть последний, который будет успешно установлен. тогда вы хотя бы знаете, где происходит сбой сериализатора.
Было бы полезно, однако, если бы JSON.net поднял хотя бы имя свойства в ошибке, но пока это не произойдет, это будет следующим лучшим решением.