Note that hjust is defined as [0, 1] based on the extent of the data area of the plot, not based on the outer edges of the plot background. So currently, your title has hjust = 0 and your caption has hjust = 1. You can use values outside of [0, 1] to move the title further left (e..g, hjust = -0.25) or further right (e.g., hjust = 1.25), but because the scale is relative and still anchored to the left and right edges of the plotting area, you will have to hand tweak hjust to get your title to align with your y-axis labels or the right edge of your plot background. You will have to repeat the tweaking if the axis labels or legend changes, since these influence the width of the plot margins.
For a different approach, see the cowplot package, whose ggdraw() function defines a transparent layer above (or below) the plot where you can add absolutely positioned annotations:
https://cran.r-project.org/web/packages/cowplot/vignettes/introduction.html
This SO question may also be helpful: