I can’t say that this is a complete solution to your problem, but at least it could be the beginning.
ggplot(d, aes(x = long, y = lat, size = size)) +
geom_segment(aes(xend = long + delta_long, yend = lat + delta_lat),
arrow = arrow(length = unit(0.7, "cm"))) +
scale_size(range = c(1, 2))
My changes are minimal: large arrowheads and scale. The upper limit of the size scale is most important if you want to avoid over-compaction.

, , , , . :
ggplot(d, aes(x = long, y = lat, size = size)) +
geom_segment(aes(xend = long + delta_long/100, yend = lat + delta_lat/100),
arrow = arrow(length = unit(0.7,"cm"))) +
scale_size(range = c(1, 2))

, ! . , . , .
UPD:, unit() , !
ggplot(d, aes(x = long, y = lat, size = size)) +
geom_segment(aes(xend = long + delta_long/100, yend = lat + delta_lat/100),
arrow = arrow(length = unit(d$size * 5,"cm"))) +
scale_size(range = c(1, 2))
