I would say make an inner package, called STATIC, that
holds all static variables.  Then use a renames clause
in each subprogram of the outer package to get a direct
simple name visibility.

Example:

Package body Bar is

   Package Static is
      Foo_V : integer;  -- that way we can have other V's
      ...
   End Static;

   ...

   Function Foo return Integer is
      V : Integer renames Static.Foo_V;
   Begin
      V := Init_Static;
      ...
   End Foo;

End Bar;

The only disadvantage I see is that you have to
change the type name in two places (Static, Foo)
if it ever needs to change.