I see two options to fix this, and I think the second option would be 'easier' to implement.
1. I don't think the first withdraw should be penalized, as sometimes people queue and then realize... "Oh wait, I forgot to do something I need to do *withdraw*." I would reserve the 'punishment' for people who withdraw 3 or more times within a set period. Five minutes seems like a good penalty, perhaps increasing to ten for repeat abusers.
2. There should be an option to 'only' join parties in progress. That way, those of us willing to do a full run don't have to deal with this constant queue dodging.
