I might seem picky, but I would first refrain from saying that $\nabla f$ is a vector. It is a vector field. This might be considered a common abuse of vocabulary, but using it amounts to assuming that student can fix it up routinely. The problem you are faced with shows very convincingly they don't.
I bet we all have been confronted to someone who, asked to compute the derivative of say $\cos^2x$ at $x=\pi$, wrote
$$(\cos^2(\pi))'=((-1)^2)'=(1)'=0$$
Even if your students seem to have passed this level of confusion once they reached the multivariate calculus class, they very probably can fall in it again when confronted with the more sophisticated material of this class. Therefore you need much greater care and rigor than will be strictly necessary later on, with students who passed the class.
Now to the heart of your problem. I don't pretend I have a complete solution, it is a prevalent and very difficult problem; my propositions are partial, and are what I try to do (I do not follow them as strictly as I should myself, even if I speak first person below). I would advise to
- discuss the question extensively in class,
- regularly make quizzes on the nature of objects,
- make clear that the understanding of the nature of the object will be tested.
1. discuss the question extensively in class
Multivariate calculus is probably one of the most ill-understood by student at the point of curriculum it is considered. It is quite easy to get students able to make a number of computations, but very difficult to get them to understand the meaning of the computed objects. One should constantly discuss the natural set to which belongs each object: $f$, $\nabla f$, $df$, $\nabla f(x_1,\dots,x_n)$, $Df(x_1,\dots,x_n)$, $Df(x_1,\dots,x_n)\bullet(v_1,\dots,v_n)$, etc. Doing so at first is in my experience not sufficient, one has to discuss this at each lecture.
One should also discuss in class the content of your question. Present a vector field and discuss whether it makes sense or not to take its gradient. Explain why it does make sense to write $\nabla\big(\langle \nabla f, \nabla g\rangle \big)$; everything that gives you opportunities to discuss the nature of more or less complex objects.
2. regularly make quizzes on the nature of objects
Student need to be tested regularly, to assess their level of understanding in order to adjust the lecture, but also to convince them to work the s*** out of this mess. It is sometimes ungrateful work, but it is important work if multivariate calculus is to be taught at all (and rewarding once one gets it).
Some quizzes should closely match what has been discussed in class, some can be given in advance to show student they did not understand what they thought they did, to introduce some explanations they might be reluctant to give attention to at first. For the anecdote, here is my favorite kind of question:
Consider $F:\mathbb{R}^3\to\mathbb{R}$ defined by $F(x,y,z)=xyz-x^2-y^2-z^2$
- Compute the differential $DF$ of $F$.
- Compute $DF(1,2,3)\bullet(4,5,6)$, i.e. the differential of $F$ at the point of coordinates $(1,2,3)$, evaluated on the vector of coordinates $(4,5,6)$.
I usually have 100% correct answers to 1. but no correct answer to 2. To make my point clear I grade this two questions together, with no partial credit if 2. does not have a correct answer. After nailing my students with this, I can expect them to answer similar questions correctly on the final test. It took me some time assuming they would answer this correctly before realizing I had to ask them, and ask them hard.
3. Make clear that the understanding of the nature of the object will be tested.
There is a more general point here. Students have a way of finding out when we are bluffing. Each time we mention something is really important, but it seems quite difficult to them, and we don't test it for fear they will fail, they register the event and realize even more that we don't really mean it when we say it is important. I thus try not to say something is important if I don't want to test it, and I try to test everything that I mentioned as important. If I don't have the time to test everything, I give priority with what students would not want to be on the test. The goal is not to make them miserable, so I tell them in advance how I work for them to be warned. They usually think I BS them, until one or two tests go by, and then they know I am serious and start taking me (and, more importantly, their need to work) seriously.