You asked for tips? I'm no expert, but this is what I did with my DD (5.12 - so not really an issue now) and DS (just turned 3 - very much an ongoing project).
Pick battles - you say you already do this but really try to edit them down cos its so wearing having to battle over everything, I so understand that.
When you are having a battle, stick to your guns and be absolutely firm and clear about what you are going to do if the behaviour doesn't improve. If you say "No pudding" or "I'm going to take you home" (from some nice playdate or activity or whatever) then you must do it. I'm so sick of hearing parents say that, then not seeing it through.
At the same time, give the little blighter plenty of opportunity to explain to you exactly what is wrong and what they would like to change. Set a time limit on this "I'm going to count to 5, after that you can tell me what you want".
If they can't or won't articulate it, then just say I'm not going to be in the same room as you while you're making all this noise, go somewhere else, do something else, (if after 5pm, pour yourself a glass of wine to take with you, if before 5pm - Rescue Remedy?) say "come and find me when you can talk to me properly".
If they come too soon, hold the door closed and repeat the instructions through the door.
Eventually the tantrum will subside.
Have a cuddle and tell the little darling why you did what you did.
Next time trouble is brewing you can say "remember what happened when ... we don't want all that fuss again, do we?"
I should think your first priority is to get the 4 year old sorted out with sleep? She is old enough to know better (that's not meant to sound judgemental, btw) - but everything seems so much worse when you're tired and you haven't got the energy to stand your ground.
Apologies if you're doing these things already. Like I said, they're just my personal rules, and my bubs are pretty well behaved. But, blimey, we do have huge upsets and tantrums and very occasional smacks (always warned in advance) and its SUCH hard work, isn't it?
3 is worse than 2 (ages, not numbers of children) imho.
I envy you having a part-time job! And getting to go to Gap in your lunch hour ...
xx