I'm probably horribly naïve, and quite possibly stupid, but I think the solution is actually pretty simple. Welfare, and all other aid programs, should be available to absolutely anyone, regardless of income. But none of these aid programs should result in the aid-ee receiving any form of currency.
For example, welfare should provide spartan clothing, housing, nutritious food, and that's it. No food stamps, no cash disbursal, but a safe and humane environment that can help people to get back on their feet. For those who don't want to get up and work, that's fine too, but comforts like being able to get coffee at Starbucks, or a big-screen TV, or a nice bottle of wine, aren't going to be provided by the government. If you want luxury, work for it.