I'll offer you advice for what I'm doing, but this is something that I just "thought up" one day and I am by no means a dog trainer, so take it with a grain of salt It is working for Nova, though. She used to be the exact same way and she has a fairly good recall now.

I wait until Nova gets comfortable with the dog, whether it's a new dog or a dog she already knows. I wait until she settles down more with the dog and they're not in the "butt sniffing" phase. Then I get really close to her with a treat or a toy and I call her making sure she knows the treat/toy is there. Then I pay quite a bit of attention to her. Belly rubs, treats, playing with the toy, etc. After a while I moved further back from her, maybe 10ish feet, and tried calling her again, still with the treats or toy. Once she had this down pat I moved back more and more, and eventually I plan to remove the reward but I'm not ready for that yet. I don't feel comfortable that she'll come if there isn't a reward.

I'm not sure if that will work with everyone, but it sure is working for her.