You could use the UPS 'address validation service' to determine whether the ship-to address is commercial vs. residential, clone the upsxml module so that one instance is for residential and one is for commercial.

Then update each of the upsxml versions to disable themselves if the address validation indicates that the address isn't valid for the service.