To support lazy introspection of BasicBeanDescription for common cases (or more specifically, often avoid it altogether), it makes sense to pass Supplier<BeanDescription> instead of BeanDescription.
Supplier will then just call introspection first time, and cache (memoize) it for further access.
The most obvious place that needs changing is Deserializers but code in BasicDeserializerFactory and BeanDeserializerFactory needs changes too.
And after databind changes, many/most modules as well.