Hi Jason,
Exactly what you want to happen will happen. Here's why:
When the cast runs, it determines whether a lead is qualified to receive a piece of content based on whether the content is an email or a program. If it is an email, it uses whether it had previously sent that specific email. If it is a program, if the lead is a already a member of the program then it is not qualified. If it is not qualified to receive that piece of content, it immediately continues to the next piece, and then the next piece, until it finds one that it qualifies for or it exhausts the list.
Because the cast automatically looks whether the lead is a member of the program as it's qualification, there is no need for you to have the same filter in the campaign.
Sheila