I think 3♥ should be understood to be a competitive bid, not as strong as it is marked. There are plenty of other ways to invite game over the double.
Also, if 4♥ is intended as an acceptance of an invitation, shouldn't the point range exclude the minimum end of North's original 2♥ bid?