I think I've figured out what's causing the "blocking" behavior if a Slave never sends the data that the Master S32K1xxx is expecting.
The LIN receive Simulink block calls the LIN_LPUART_DRV_RecvFrmData() function, which is technically non-blocking (LIN_LPUART_DRV_RecvFrmDataBlocking() is the blocking version), but it does set the linCurrentState->isBusBusy flag to true, which effectively prevents the other LIN blocks from using the bus.

The LIN_LPUART_DRV_MasterSendHeader() function called by the LIN_Master_Send_Header block checks to see if the linCurrentState->isBusBusy flag is true and if it is, returns without sending the header.

If the Master never completes receiving data from the Slave (slave goes offline, etc.), the linCurrentState->isBusBusy flag never gets reset and the Master can't send any more headers.
Allowing a bad slave to prevent further action by the Master is probably not a great idea.
I modified the lin_lpuart_driver.c file as shown below as a hacky workaround, but modifying the NXP driver source code files is not an ideal long-term solution.

A better solution may be to add some checks of the linUserConfig->nodeFunction (MASTER/SLAVE) flag in various places where it makes sense for a Master to do things regardless of slave behavior, but I haven't fully thought through where all of those checks would need to be.
I'd appreciate any insight into other possible solutions or more "correct" workarounds for this issue.