As for your last "bug":
ReleaseHold[aVec]
does what you don't expect because RealeaseHold
only releases the outer Hold
, but your aVec
has two layers of Hold
:
Hold[D[Hold[D[rVec, t]], t]]
which, after the release, becomes
D[Hold[D[rVec, t]], Quantity[tM, "Seconds"]]
The variable tM
does not appear in the function, and the derivative is zero. rVec
has no chance of being recognized as a vector made of lengths.
At least, this is my own interpretation at the moment. I am no expert of nested held expressions.