Curve keys return either a list of tuples, eacn containing four Vectors (if the
curve is a Bezier curve), or otherwise just a list of Vectors.

For bezier keys, the first three vectors in the tuple are the
Bezier triple vectors, while the fourth vector's first element is the
curve tilt (the other two elements are reserved and are currently
unused).

For non-Bezier keys, the first three elements of the returned
vector is the curve handle point, while the fourth element is the
tilt.

A word on relative shape keys; relative shape keys are not actually
stored as offsets to the base shape key (like you'd expect). Instead,
each shape key stores an entire model (actually the state of the mesh
vertices after exiting editmode with any given key active).

The additive offset for a shape key is calculated (when needed) by
comparing the shape key with its base key, which is always the very first
in the keyblock list.