Ok, I've got it working now. I can send data in blocking/interrupt mode, then de-inititialize and reinitialize in non-blocking/dma mode, and continue sending data.
In the end there was nothing special about the S32DS-generated config structs (EDMA, UART, CLOCK, PINMUX configs were all correct as generated by the Eclipse tool). For example edma_channel_config_t just has default priority, a particular virtual channel number for eDMA, and the UARTx_Tx/Rx source as the S32DS GUI instructs you to configure.
The issue was the configuration of the interrupts, as I suggested above. Here's what I changed: I removed calls to INT_SYS_InstallHandler() in lpuart_driver.c; deleted g_lpuartIsr[]; named the IRQs with their default name from the .S file (LPUART0_RxTx_IRQHandler, etc); and added alwayslink and linkstatic to driver libraries which include IRQ definitions. This last step should hopefully ensure the linker throws an error if there is ambiguity in which IRQ should get used.
I don't see any particular benefit to using runtime IRQ configuration as was done in the UART driver, since the hardware is going to be designed either for LIN or UART and not runtime switchable. So using a static IRQ name for whatever the actual PHY layer is would be fine in most cases and is much clearer. Maybe all the misdirection in that area is because LIN is only supported as a wrapper around UART0,1,2 with some other stuff added like CRCs. Regardless, since I'm not going to use LIN I don't particularly care if the UART and LIN drivers can be made to be compatible, and would prefer to just keep them separate.