There seems to be a difference in behavior of ObjectReader::readValue(JsonNode) and ObjectReader::readValue(String). In particular I've found a difference in how they treat the combination of @JsonUnwrapped and @JsonSubTypes and a custom deserializer. I am attaching two minimal test cases. They are identical but one uses ObjectReader::readValue(JsonNode) (and fails) and the other one uses ObjectReader::readValue(String) and passes.
Tested on version 2.9.2.
unwrappedSubtypesBug.zip