Just above r == 1000, the integrand underflows, even with arbitrary precision.
Table[func, {r, {1.`16*^3}}, {A, 10^Range[-4, 7]}] (* really small numbers *)
Table[func, {r, {2.`16*^3}}, {A, 10^Range[-4, 7]}] (* Underflow[] *)
For just above r == 0.0008, it underflows at machine precision. Perhaps you can truncate the integration interval to {r, 0, 0.001}. For large values of A, it takes forever, though.
Perhaps the problem can be rescaled to better fit with floating-point numbers, but I have doubts it will be much more effective.