When facing this sort of situation, there's always three possible responses:
- leave it as it is and hope that the problem will resolve itself - you've tried this, and obviously are trying to find something better;
- abandon consideration of the client until future development - asking this question here makes it likely that you want to avoid this option for now, and it's possible that you could just take it up later anyways, which leaves us with;
- iterate your pricing structure.
Bear in mind, I'm assuming with this that you are not working for a temp agency (in which case they should be working these things out for you), and can negotiate your own contracts. Also, SOME OF WHAT I'M THROWING OUT HERE I NEITHER HAVE DONE, NOR RECOMMEND, but instead I've just thrown in for some variation on completeness. I'll throw in my suggestions at the very end. I'm not certain what your pricing structure is, and honestly I'm not concerned with that. I am concerned that you improve your pricing structure in an informative way, and that calls for informative grammar. In particular, I suggest considering the addition of the following types of charges:
i) Retainer fees : They're effectively treating you like they would their "family lawyer", so they should pay you like one! As in, through the cost structure, not necessarily the same rate. Upside: you can get guaranteed income, and spend non-used time for whatever else! Downside: you can be forced to drop whatever you're doing at whatever period that's specified in the contract, and there's likely to be details that your government has specific regulations for. Retainer fees are usually a fraction of the expected charge, and the later cost towards the customer is reduced by the same amount as the retainer fee. If the "final cost" would be smaller than the retainer, then the customer usually gets that amount as a refund, which means that you probably overestimated in the first place, and should fix that mistake for if they ask for an extension/renewal. The contract should specify how long the period covered is, AND what portion of the retainer stays with you under what circumstances (if they never call for you during the covered period, then usually all of it stays with you, and no longer counts as a retainer afterwards). Remember to specify ALL of the pricing details too, such as the periods of the day that are charged at double the rate vs normal (hint: make night work expensive), and similar for weekends & holidays. Plumbers, electricians, and other contractors do it (actually, my lot have more levels of granularity, but none-the-less, and we're tied to just a few long-running employers anyways), you should do the same (especially if a customer has already wasted your time, like this one has). Remember to specify if different multipliers (e.g. late-shift + weekend) multiply, add, or simply replace each other (they should usually multiply, but remember to clarify whether the multiplier applies to the TOTAL, or to that TIME PERIOD). Also, the customer either will or should want some flexibility: I'd suggest not charging lunches at all (note: standardize the lunches & breaks, with breaks charged for, and tie them to work-hours per individual day, with a catch-clause in case they have you working aver your contract's change-of-day), only charging while logged-in (so they'll have a verification mechanism), a time period such as 7am - 5:30pm (a 10hr 30min afternoon shift) to all have a 1x multiplier, a 1x multiplier for the first 8 hours of any day (and remember to specify the definition of the day!), a 1x multiplier for the first 40 hours of the week, a 1.5x multiplier for the next 20 hours, a 1x multiplier for five specific days of the week, one 1.5x day, one 2x day, and some mixture of 1.5x and 2x for holidays (do specify the holidays, but for long holidays like Ramadan, Haunuka, and Christmas, find some way to go light on them, like the first 20 hours per day for some of those days the holiday modifier drops down to 1x).
ii) Rush fees : if they want to call you in at the last moment, then they can pay "hazard pay". Specify the time period that you're available, and apply a multiplier to subsets of your charge for that period depending on when they get in touch with you with the required information for that subset. If they want to add a subset, then that requires an addition to the charge, though the contract should probably specify that the timer for that subset starts when the subset is added to the contract. Add some protections in case you aren't able to finish in the time specified, particularly milestones so that you can fall-back to the payment for the "most recent milestone for the subset" instead of just getting nothing, while neither leaving the customer with nothing, nor requiring a full payment from them for incomplete work. Remember to add penalties in the contract both against yourself if you finish late, and to the customer if they get you required info for a subset after the specified period.
iii) Idling fees: A variation on retainer fees. Charge them at a fraction of your normal rate during periods where you're reserved for them, but you're able to do other stuff for other people in the meanwhile. If you are LITERALLY waiting for the customer to show-up for a meeting at a previously agreed time for 30 minutes or more, then do this. If you are the one who arrives late by 30+ minutes, assess the same fee against yourself. No payment changes for early arrival. The relevant time periods may need to be shrunk for short periods. This fee should be higher than the "per hour" of a retainer, but (because of the fact that you will be specifying that you are allowed to do other work during these periods) lower than your normal hourly fee. I'd suggest half your normal fee or less.
iv) Premiums : They want you for insurance? Then let them buy insurance. But beware (and really, don't go with this model, you'll get over-used for a week and then they'll drop you, plus you'll have to finish everything during that week)! Insurance is expected to "fully pay out" whenever "disaster strikes", and without any further payments, which means that you would both have to complete whatever they needed, and do it without any payment other than the premium! This sort of service is best performed by a reasonably large company that can spread the cost of "random disasters" across a large customer base, which is why "mom and pop insurers" are usually affiliates of large national insurance companies.
Go for (i), maybe with (ii) and/or (iii) thrown in, but keep it simple. Base the holidays on their company's holidays, + any personal religious variations, + some space for disease (with a doctors note! Do this professionally! And make it up to them by automatically extending your availability to them a matching amount!) and pre-scheduled vacations (a week or two is usually enough). Depending on the length of contract that they want, you might want to drop the vacations (if it's a 1 week contract, don't include vacations; if it's 1 month, include one or two "under duress" vacations, but try not to use them). Match the "1x multiplier" days and hours to their own, + as much as an hour before their start, and up to 2 hours after they close (the trailing hours are likely to be more valuable to them than the leading hours). Adjusting the hours in a work-week is fine, but I'd suggest no more than 60 hours per week at 1x (I've worked 60 hour weeks while single: the first month is fine, but past that is difficult), and absolutely step it up by .5x every 20 hours past.
Remember that the biggest upside to the retainer is that it automatically makes your cost after they agree less expensive to them than before: it's basically a mind-trick that coincidentally gets you pocket change. Also, think about several different possible time-periods for the contract, and carry notes about changes to make if they decide to change the period (at 1 week you don't care about vacations, at 1 month you kinda do, at 1 year you absolutely do). In general though, try to keep the additions to the contract to less than a full page, preferably no more than half, because simplicity really is best for changes like this.
Avoid (iv) like the plague. That's for "programming disaster recovery" companies, and calls for large teams of relatively elite workers, each of which should themselves probably be on a retainer with the "recovery" company. Not that I know of any such operations.
If they continue to do this, then slowly elaborate on the contract. In particular, make certain that your "downtime" becomes more expensive for them, though you should decide ahead of time on a level at which you will hold it stable. If they keep this going for multiple years and they still mostly don't use you, then maybe you should actually start that "programming disaster recovery" service.