Do you have to use "Not Contains"? Have you tried "Is Not"?
You could try adding those people to a static list and instead use "Member of List - Is Not - [Static List Name]".
If that filter is in the flow as you say, then that is the reason why. Campaign qualification happens at the Smart List level. If your filter is set up as a choice in the Flow then the leads will still qualify for the campaign but wont qualify for that specific choice in the Flow. You may want to consider putting that filter in the Smart List instead.
I would try the positive statement
Lead Source = X
Lead Source CONTAINS X.
then plug in this smart list as Member of Smart List NOT IN to ensure your other campaign excludes these people.
I suspect CONTAINS is not working the way you think.
Thanks for the help all. I tried is not, but that didn't work either. I went witht he Smarlist and that seemed to do the trick.. Thanks again