One option is to use an armature. Put the tail of the arrow in the vertex group of the root bone, and then put the head of the arrow in the vertex group of the second bone.
To achieve the same magical behavior as Carlo's answer the armature needs a few bone constraints (which you can add while in pose mode, and they are different than object constraints).
The following 2-bone construction almost works, but suffers from a cyclic dependency:
The root bone needs a Track To constraint targeted at the head bone. The default To=Y is good.
The head bone then needs a Copy Rotation constraint targeted at the root bone.
To resolve the cyclic dependency we need a third bone I'll call "target".
Base bone needs a Track To constraint targeted at target (how creative!)
Head bone needs a Copy Rotation constraint targeted at the base bone. It also needs a Copy Location constraint targeted at the target bone.
This eliminates the cyclic dependency.