So here are the reasons I don't like retainers with service providers where the task is somewhat undefined:
1) Retainers become accepted income and the agency rarely services the client as well as a project based client. It covers overheads and isn't seen internally as pre-payment which leads to overcharging.
2) Whatever the retainer is supposed to cover almost everything requested is an additional cost.
3) Even when I have insisted on timesheets the effort expended rarely matches the billing.
4) Agencies on retainer get lazy and, despite the access argument, a high fee paying project client always gets the talent first, leaving me with interns or juniors.
5) The retainer restricts me from picking the right agency for the job so although the tie-in works for the agency it doesn't work for me.
6) Retainers cause bad relations between the client and the agency as each side feels short-changed. Client relationship management turns into placating the client rather than pitching great work.
For me these are reasons why retainers have failed in the past and may be issues you might need to address. I understand the cashflow issue but if you are honest with your clients and deliver consistently good work they should be prepared to provide part payment upfront on a project. That is a reasonable alternative to a retainer.