i only run one team per season(vball in the winter, hockey in the summer, yeah i know...) and it's for a reason, it's a pain.
but that being said, you guys don't sound like you're doing much to help out either.
i have a couple very simple rules. #1, i front no money ever. so if the registration is due in may, and i need money to register. i'm organizing the roster in feb, confirming in march, and collecting in april. you can't pay me first week in april, i replace you. i've never had a problem with finding ppl interested to play, so replacing somebody is a lot easier than chasing them halfway through the season.
as for all the hidden costs. you collect those up front as well. nobody wants to bring 2bux for ump fees every game, it's annoying. you collect that at the start of the year, just like the price of balls, new scoresheets, etc.
if you try to do everything last minute, that's when you get yourself into trouble. it's hard to pick up paying players part-way through the season. it's hard to collect small amounts from guys every game. and it's unreasonable to get mad at players missing games just because you're not organized enough to have spares. if guys are cancelling REALLY late, you fill out your roster and let them know the reason they have to sit half a game is because they aren't reliable enough. it might take a couple seasons, but the first ppl to ditch teams due to 'not getting enough playing time' are almost always the ones that will no-show last minute, and put themselves first whenever possible. good team players will stick it out, and those are the ones you want.
first year i ran vball, i had 12 ppl, and we only got to play half the time, ppl would no-show without even calling just assuming we'd have enough, it was a nightmare. now it's down to 8(2 subs) and i haven't had to call in a spare except for weddings and other major events that i'm given weeks of notice for. everybody who's left is committed, pays quickly, and gives me appropriate notice when they miss. and if they didn't, i'd ask one of the 5 ppl that's been begging to join the team to take their spot.
i play on a team run by a friend, and he always does everything last minute and then gets pissed at everybody not paying on time. the team has been going for 4 years now and nothing has improved. maybe you're just being too nice, but there are things you can do to make things easier. maybe that's finding better team mates