I understand you have a large dt because the resolution of the barometer is poor so you don't get value changes very often. Changing your algorithm to hover at the boundary between adjacent values would help with that but not solve the problem. However, if you have an accelerometer then you can get a much finer resolution on the vertical velocity which gives you the input you need to the I term. You just need to ensure that if you do use an accelerometer, you merge it with the barometric input to eliminate drift and cumulative integration errors before applying it to the PID (or whatever feedback algorithm you prefer).