Stone,
I would report this as a bug. It evaluates without the limits:
in = Integrate[(2*A*r - ((2*B)/r^3) + (d/r)), r]
and then you can manually evaluate it at the limits:
(in /. r -> q) - (in /. r -> p)
My guess is that MMA is trying to figure out what values of p and q are legitimate.
I also tried Rubi for Mathematica and it returned your original integral instantly (of course Rubi did not figure out when p and q are valid.)
<< Rubi`
Int[(2*A*r - ((2*B)/r^3) + (d/r)), {r, p, q}]
but it gave the same answer:
-(B/p^2) - A p^2 + B/q^2 + A q^2 - d Log[p] + d Log[q]
Regards,
Neil