has a good (their young, so it doesn't need to great ... not yet at least) work ethic
There is no reason they shouldn't have a great work ethic. They just may not have had many opportunities to prove it professionally. You should expect interns to work really hard, if for no other reason than they want to impress you to either use you as a reference for a real job, or maybe move into a real job in your organization someday.
I'm curious as to where others are finding interns?
We generally hire our interns from local universities. Usually the university will have some sort of internship program where you can post internship opportunities or they can refer students to you. Depending on how the university operates this may be done on a department to department basis, so you could contact the Computer Science department and tell them you are looking for programmers for internship opportunities.
How do you determine the good ones?
I would recommend interviewing interns similarly to how you would interview an entry level programmer. We generally treat our interns like new programmers anyway. We give them real work (realistic to how long they will be working with us, if it is a summer intern, for example).
Which kind of answers your last question:
What are you doing to make sure that they are setup for success within your organization?
Set them up for success by giving them the opportunity to be successful. If you give them mindless, tedious work - or have you fetch coffee, they are not going to have fun or learn anything.
You shouldn't expect them to be expert programmers, but they should have a chance to learn quickly and solve real, interesting problems.
Good luck in your search!