Why not use horizontal columns?
It looks less repetitive and wont take much space, and neither causes bad eye experience (as it looks more stacked and more organized).
Let's take an example of International Student Calculator by Brightside, as you see here, you enter, and it show to horizontal columns, one is for income and the other for the outcome, each column has its questions, my idea is to change your layout to something this similar, columns with teachers' names, and under it are questions the students are those questions, and once they finish all the columns a call to action button appears, as to "send" or "save" see the image below :

Now let's say you have too many columns, there is always a solution to arrange them instead of making the cluttered in each other, and for this we take Trello by Fogcreek as an example, Trello also uses columns to organise boards, but if you add too many boards it keeps adding the columns on the right, until they are not visible, it may seem bad but it is not, as the Fogcreek folks done hell of a good job on the interface, see the image below :

So what did they do to make the user notice that there are hidden columns on the right? simple!
They have not hidden the columns entirely, but instead, they have shown a little part of it to make the user notice that he has other columns that are not visible on his screen.
Also, they have made the Horizontal scroll bar always visible, so the user can tell that he has other columns that are not visible on the right, Another thing of Good User Experience is the the scroll bar itself, the color stands out from the background, which will cause the user to notice it, another thing is the size, the color alone will not help if the size is a regular scrollbar, so they made it larger and impossible to not see it.
The student going to your program must "always" know that he is going to comment and grade his teacher before reaching this page, as he will be expecting many forms to fill.
Along with the horizontal create fluidity in your page, it will be complex to make, but for the sake of the end user it will remove the repetitiveness and adds the factor of "fun" to your page;
An example of the fluidity would be making the design adaptative to the student's previous answers:
1.how much score you give X?
X>7:
2. What is the most thing you like in this teacher's classes?
X<4:
2.What bother's you most in the classes?
Make the X>7 question a text field for comments, and for X<4 a drop down of most common things that students dont like in the class (material is hard, boring environment....)
Etc.....
EDIT : Thank you for creating this prototype, I am sure it will help other community members and visitors that are facing your problem.

Another thing is that how to deal with long texts in the small area provided.
The solution I am thinking of now is stripping the content at 300chars, and add a "more" button at the end of it, if the user clicks on it, it shows the the extra content in the same box or in a modal, don't forget to add "Less" button to hide the content and not allow it to ruin the UI.
Another thing I would suggest is that along with the "More" button, is that you add how many words left, so the user can have an idea on how much more he is going to read, if you are going to use a modal, I suggest you to add a small icon indicating that the extra content will not be shown in the same area, and not freak out the user.