Dark frame subtraction is so simple that I don't think the program can be wrong, especially if it's made just for that.
I think the problem lies in your photos, i.e. they aren't actually shot in the same conditions. Comparing a "real" photo with the dark frame should show roughly (actually, exactly) the same noise "halo".
If the halo is stronger in one photo than in the other, then the parameters don't match.
In order to have almost the same conditions, I try to shoot my dark frame immediately after the real ones. I often take many many long-exposure shots (for example, for stacking or for doing star trails) and what I do is
1) setup parameters (for example, 15 sec ISO 100)
2) put the camera in continuous mode (so that it keeps taking photos as long as the button is pressed)
3) use a script to "press the button forever"
4) start taking photos
5) wait that enough photos are taken (e.g. 30 of them)
6) cover the lens and take other 3-4 dark frame shots
Of the 30 "real photos" I discard the first ones, when probably the camera was colder.
Of the dark frames I only keep one, a "really dark" one. Keep in mind that there will be always a "partially dark frame" at the beginning of the "dark" sequence, because you probably cover the lens while the camera is exposing. Also, at the end of the "dark" sequence there might be other similar stuff
Doing this, I hope that other parametes are as close as possible, such as external temperature, time since the camera was turned on (with time, the camera heats up and the noise changes) etc.