I'm not sure if there's a simple way to prevent the issue. I would do this by basically reconstructing the ListVectorPlot Function from VectorPlot. To make it easy, I'll just make an Interpolation of the x and y values for the vectors separately:
(* Munging the data into a form acceptable by Interpolation *)
xvals = ReplaceAll[data, {position_, {xval_, yval_}} :> {position, xval}];
yvals = ReplaceAll[ data, {position_, {xval_, yval_}} :> {position, yval}];
(* Create Interpolations of the data *)
xfunc = Interpolation[xvals, InterpolationOrder -> 1];
yfunc = Interpolation[yvals, InterpolationOrder -> 1];
(* These interpolations can be used with VectorPlot *)
VectorPlot[{xfunc[x, y], yfunc[x, y]}, {x, 39, 42}, {y, -89, -87}]
You have to specify the range over which you want VectorPlot to plot. In this case, the range is a bit out of the bounds of the Interpolation, so there are some error messages. We can also get the actual Min/Max values in the dataset and use these.
{xmin, xmax} = MinMax@data[[All, 1, 1]];
{ymin, ymax} = MinMax@data[[All, 1, 2]];
VectorPlot[{xfunc[x, y], yfunc[x, y]}, {x, xmin, xmax}, {y, ymin, ymax}]
Thank you for taking the time to report this issue. I've forwarded the example to the developers so that they can take a closer look at the issue.