So for me if I change your videoReady() function to have the sampled video width/height to assign that to your global wv/hv vars it works for me.
async function videoReady() {
  console.log("Capture loaded... or has it?");
  console.log("Capture: " + video.width + ", " + video.height);
  console.log("Video element: " + video.elt.videoWidth + ", " + video.elt.videoHeight);
  
  wv = video.elt.videoWidth;
  hv = video.elt.videoHeight;
  
  console.log("video ready");
  await getPoses();
}

In other news though this p5 code is running very slow which is odd as I usually get much higher FPS on my old laptop which I am using right now (eg 45 FPS which I just confirmed with the original MoveNet demo code) There may be some code you are using that is not efficient here which I advise checking for - however they are indeed rendered at the correct position now at least.