Is it appropriate to warn a client that they will no longer have top priority because they have not renewed a retainer in a timely fashion?
For my client I work on them based off the deadlines that I set. If I have two sites due the same day I will work on the one that is gonna take the longest and needs more advanced programming incase I run into any problems.
I don't think a client needs to pay to be priority, unless that is something they are willing to do but that should be discussed up front.
When working on multiple projects, distributing work and time is a personal choice (you can work on the most complex project first, on the highest paying first, on the oldest client first and so on).
Generally, I try to steer away from retainers, but if I do use such practice, I make sure I pause work immediately when the last payment expires and resume it immediately when the next payment is received.
An alternative and a better approach in my opinion is to request an upfront percentage for the whole project/week/milestone (e.g. 50%) and only work when this upfront payment is received. This way you will be (partially) guaranteed that you will receive some money for your efforts. If the client is late with the upfront payment - too bad for him - his project will be delayed and you can always work for other clients in the meantime. Just try to not get any long-term projects though, because you may be overwhelmed once the first client pays.
In general I think charging for priority for routine work is a mistake. However, there are some exceptions and a few places where I do charge for priority. These are the exceptions and not the rule.
In general I charge extra for urgent support. The reason here is that if it is urgent and I have to jump off something for another customer, I need to let them know, etc. there is extra labor for me, it may cause some minor issues for normal work for the other customer, etc. After hours I charge even more because you are taking my family or sleep time. I waive these if I suggest scheduling in such time in advance, but if the customer demands it, they get to pay extra.
If the customer doesn't renew the retainer, the obvious thing to do is suspend work on the project and let the customer know they need to pay before you do work again (at your normal rate). Pay for priority should be reserved for addressing emergencies and not for run of the mill development.
A second thing to note is that this is a lot easier to do if you can have two gigs where you promie a minimum of 20 hrs than it is if you have one full-time with a minimum of 40. You can offer the other customer some extra hours to speed things up in the mean time (maybe a week at a time) or the like to fill in gaps.