... I'm not convinced that any of them will hold their shape.
What I'm after is a contrictor type knot that will hold it's shape
(without biting onto anything)
and will go from large diameter to small diameter as you pull the opposing ends.
I'm beginning the think that such a knot doesn't exist... 
Kieran, then we will have to
invent it!

It's not clear what you mean by "hold its shape":
with the
constrictor e.g., (or
clove), one cannot
simply hold the ends and remove the object and
retain the knot --true. But what exactly is the sort
of changing-of-object(&dia.) that you expect to do?
Here's another idea : form a
Prusik hitch (around air,
or a small hollow cylinder); send its ends apart from
each other around an object,
and pass them through the hitch (if a small hollow
cylinder is holding the
Prusik's form, pass one end
through and then remove the cylinder, then pass
the other end through in the opposite direction
(of course)). You'll need to work the knot tight
around the ends --really work it : the resistance
or any expansion of the bound object will pull
the coil-halves of the knot apart (and tighten
them to grip), but the pulling on ends to set
the structure newly tight to a smaller object
will pull knot-halves together,
so there is this sort of *looseness/give* to deal
with, best done by tightly setting original.
Now, you end up with two wraps around your
"central object" (as you have with the above),
but these "loops" shouldn't so readily fall apart,
and the knot will hold shape around the ends.
(I should say that you end up with something
akin to the
Gleipnir variation that Knot4U showed,
but with a full knot nipping parts in the center
vice the simple turn; it is this full knot that will
hold
its form, but I'm not sure whether that
fully meets your concerns.)
There could be added cleverness to the
Prusikto make it so that the loops don't cross each other
in surrounding the central object. (The
P. can
be seen as an extended
cow hitch and you can
use instead a
clove hitch orientation of those binding
coils which might facilitate keeping each loop/wrap
on one side of the other.)
--dl*
====