Behavioral and RTL are not my terms. Neither are their definitions. However, behavioral
is one level of abstraction higher than RTL.
The term RTL can be a little confusing. The code for a multiplexer, for example, is considered RTL
yet, by itself, has nothing to do with registers.
As you say, the line between behavioral and RTL can be blurry. In some instances the main distinction between the two
is that one is synthesizable while the other is not.
Now, the multiply operation could be implemented entirely in FPGA fabric using shifters and adders but is is much
more efficient and faster if implemented in a DSP slice (which the synthesis tools will likely do). The fact that, hardware-wise,
you've told the tools how
this_term is to be implemented (multiplication of
value and
c) is what
determines this as RTL rather than behavioral. Behavioral usually gives no information at all how something is implemented
and, as such, is not synthesizable.
http://www.ohio.edu/people/starzykj/network/class/ee690/slides/behrtlpresent.pdf