Would it be possible to have a "Homework Button" below each new question? Clicking it would 1) automatically add a comment pointing the OP to our homework policy, 2) also in the comment add some text suggesting the OP post what work towards a solution he or she has done so far and 3) freeze the post from accepting answers until the homework button is unclicked; if any answers are already posted, they would be placed in limbo until the OP resolves the issue. Anyone with a certain rep level could click or unclick the button.
I think this is a great idea, but I'm not sure how much traction it would gain, since all of the beta sites on SE use the same codebase, so I don't think it would be easy to modify the existing UI. The team can do things like tweak the rep requirements for privileges, etc., but I don't think they would make a modification for just us or for the SE science sites in general.
I think that we can make the site work for us in this way without any additional tools in the main UI, though.
I have a boilerplate comment that I use within AutoReviewComments, which allows you modify the comment before posting, so you can add in any additional detail needed. While it's always best to customize a comment for each situation, it's not usually necessary when all we are doing is pointing folks at the Meta post. Many people around the network use this script, but I don't guarantee that it won't break, etc., with any major changes, though the author does update it quite frequently.
What you're describing about the option of "freezing" a question was the original impetus behind being able to close questions. I think we can use that to our advantage here. If you see something that is clearly a homework question with no effort put in, please vote to close it. Once the user edits in the proper information, a reopen vote can be cast. Since there's not always 5 people around, if you see an egregious case where something needs to be closed, don't hesitate to flag it (in addition to close voting, using the Other... option) after some time has passed.
While this combination isn't ideally what you were after, it is the best means we have right now to address the problem. I will leave this open as a feature request and if it garners enough support, we can move it to Meta Stack Exchange for vetting there.