Here's a way to do it. Because spring layout seemed a bit hard to tame, I used absolut vertices, which I connected later.
The solution below produces the left part, while the right part is the solution posted in the question.

\documentclass[10pt, border=10pt]{standalone}
\usepackage{tikz-feynman}
\begin{document}
% placing absolut vertices first
\tikz{
\begin{feynman}
% specifying the vertices
\vertex (a) [empty dot] {};
\vertex (b) [dot, above right=2cm of a] {};
\vertex (c) [empty dot, below right=2cm of a] {};
\vertex (d) [empty dot, right=2.8cm of a] {};
\vertex (i1) [above left=2.5cm of a] {};
\vertex (i2) [below left=2.5cm of a] {};
\vertex (f1) [above right=2.5cm of d] {};
\vertex (f2) [below right=2.5cm of d] {};
% drawing the connections
\diagram*{% NO spring layout, though it dowsn't seem to matter
% loops
(a) -- [quarter left] (b),
(b) -- [quarter left] (d),
(a) -- [quarter right](c),
(c) -- [quarter right](d),
(b) -- [quarter right] (c),
(b) -- [quarter left] (c),
% initial
(i1) -- (a),
(i2) -- (a),
% final
(f1) -- (d),
(f2) -- (d)
};
\end{feynman}
}
\hspace{1em}
% initial solution
\feynmandiagram [layered layout, horizontal=a to b] {
{i1, i2} -- a[empty dot] -- [half left] b[empty dot] -- [half left] a,
b -- {f1, f2},
};
\end{document}
tikz-feymann
?