I see 3 possible ways (just thinking and giving you some suggestions from our experience)
1- hook WMI query with a custom C code. But this is complex, may be dangerous - probably not supported by Microsoft - and not the best way. The problem is not on the WMI dll I guess. I think problem is in the machine’s BIOS the WMI code is looking at. So I would not change WMI logic.
2- Contact IBM HW or Lenovo HW and discuss about this problem: I assume the WMI is reading BIOS memory at a given offsset (as we do during PXEboot) and this location has that invalid value.
You may PXEboot this target in TPMfOSd BareMetal, and check in TPMfOSd WebUI -> Target Monitor the model field: I know we read this information from a given BIOS location: if it contains INVALID, then problem is in the BIOS itself. If TPMfOSd reads it correctly, then WMI is reading something else.
3- any other WMI query/column showing a meaningful value ? maybe the model is somewhere else ?