This is a weak point in AirBnB's pricing model, and something they should address. One approach would be to allow a host to specify the cleaning fee on a per-(day-count) basis, where the "day-count" could be specified by the host. For example, a host could specify that stays of 1-5 days (or whatever) would incur one cleaning charge (and come with one change of sheets, towels, whatever), but that an add'l cleaning could occur every X days for an add'l charge of Y. Leaving it up to the host to specify the values for X and Y.
Or AirBnB could allow the host to set the cleaning charge on a per-day / per-stay basis. By that I mean, we could specify cleaning charges at something like a base charge of $XX (for example, $20), then an add'l $YY (for example $10) for each add'l day.
Basically, something more realistic that the current $XX ($35, or $50, or $150) single cleaning charge, no matter the length of the stay. Obviously, a stay of 2 nights will require a lot less cleaning (and turnover of sheets, towels, etc) that a stay of 25 nights.