In order to get an ellipse you need to have $s_a=-s_b$. By multiplying everything with $s_a$ and then subsuming $b$ into $a$ we can get $a+\sqrt{(p_x - x_x)^2 + (p_y - x_y)^2} = - \sqrt{(q_x - x_x)^2 + (q_x - x_y)^2}$ Square both sides of this to give $a^2+(p_x - x_x)^2 + (p_y - x_y)^2 +2a\sqrt{(p_x - x_x)^2 + (p_y - x_y)^2} = (q_x - x_x)^2 + (q_x - x_y)^2$ Rearrange this to get everything but the remaining square root on the right-hand side. The $x_x^2$ and $x_y^2$ terms cancel out (which is why we needed $|s_a|=|s_b|$), and we get $2a\sqrt{(p_x - x_x)^2 + (p_y - x_y)^2} = (\cdots)x_x + (\cdots)x_y + (\cdots)$ with some constant coefficients on the right that you can work out. Now square both sides again. You get a second-degree equation in $x_x$ and $x_y$, describing a conic.
(Now, where did we use my requirement that $s_a$ and $s_b$ have different signs? We didn't. But if the signs are equal, then the equation describes either half of a hyperbola or nothing at all -- the "nothing at all" case being the locus of points whose distances to $p$ and $q$ differ by more than the distance between $p$ and $q$, which is forbidden by the triangle equality. The information loss inherent in the squarings magically replaces this non-existing locus with an ellipse anyway, but an ellipse that doesn't solve the original equation).
If $|s_a|\ne|s_b|$ then you may possibly get a roundish curve when you plot your equation, but this curve will not be an ellipse. Because the quadratic terms do not cancel out before we square for the second time, we get a fourth-degree curve after the dust settles. I imagine that it will start looking somewhat egg-shaped as the relative difference between $|s_a|$ and $|s_b|$ increases.