The way search interprets queries is evolving a lot over time. There’s really no one true search any more – there are different behaviors between the API and the website.
When I try to recreate this, I’m not seeing specific issues with the operators themselves – they seem to function as I expect them to.
Perhaps the reason you’re not getting data back is just due to the Search service just not thinking it has relevant results for you.
Personally, if I were trying to do a similar feature to this, I would use statuses/user_timeline instead of the “from:screen_name” component and then interweave the results of searching for “@screen_name -from:screen_name” with it.