Seems simple to me. Do a census on how many people live on the street. Build or buy facilities to accommodate this population and add 10-20%. Then pass laws that its illegal to live on the streets since there are free facilities to house these people. No drugs would be allowed so it would force the druggies to either clean up or get thrown in jail (since they would come back out on the street) and have a good detox in jail.
Then we would have these large populations in jails and homeless rehabilitation sites. These people would first be given some help with their mental problems and the ones who are still capable could be trained and employed to do many of the jobs farmed out to illegals. A "make our cities and towns beautiful again" coalition could be formed to target the areas needing improvement. Does a downtown area need painting and a comprehensive cleanup? Now you have a workforce who can do this. So the population who was causing the mess is now part of the cleanup and no longer contributing to the mess. They and all citizens of this area will begin to have pride for these areas and new things can be created like community gardens, full circle recycling and material organization, etc. The people who were looked down upon, will be seen as valued members of the community and will come to be appreciated by the general population. This will give those people who were once homeless, a new self worth and they will work towards getting back on their feet again.
I propose the national guard be the ones to implement the organization of this coalition. Train the people, empower them, pay them, and start a civil guard that will one day people will actually sign up to be part of because of the great things they do.