I think I may at least partially understand your issue.
You're trying to smush 2 dimensions (x and y) into 1 dimension for rk4. ("State" in gaffer's article.)
Remember that dimensions are completely separate from one another!
Gaffer's article shows rk4 in only 1 dimension. Be careful with x and y in some articles. x and y may be used as variable names without much meaning, whereas they represent different spatial dimensions in physics.
Are you familiar with Taylor Series? The RK4 is similar-ish.
Constant position (1st order):
p(t) = c.
Constant velocity (2nd order):
p(t) = v * t + c.
Constant acceleration (3rd order):
p(t) = a * t^2 + v * t + c.
Constant jerk (4th order):
p(t) = j * t^3 + a * t^2 + v * t + c.
(Yes, "jerk" is the correct name for "change in acceleration". However, I guess it's sometimes called a "jolt". Yes, it exists. Real-life example: you pressing the gas pedal in a vehicle is jerk, as you are changing the acceleration of the vehicle.)
You can keep going, but, there's a point where it's just inane (jerk is usually that point).
Euler's method is inaccurate when any of the above values are not constant over a timestep, 't' (realistically true). Gaffer explains this in the beginning of his article you linked.
And since computers are finite, we can't be as accurate as the real world, hence the concept of a timestep.
RK4 takes this into account, and takes 4 samples ahead, where each following sample uses the previous sample to calculate itself, to more accurately estimate changes in velocity, acceleration, and jerk.
I hope this helps RK4 make more sense.
As for your acceleration function you have there, that's not acceleration due to gravity. That's acceleration due to a spring,
Hooke's Law.
What you should do in that function, is add together
all sources of acceleration on an object. Gravity, collisions, friction, drag.... springs.
Then return that total.
Also, since you're using VB.NET, C# DLLs should *just work*, since they both are just compiled to CLR IR.