OK, good news.
1) With the new 2.6.31 kernel with CONFIG_USB_SUSPEND=y then an empty hub doesn't eat any appreciable extra power.
2) I've rigged up a moderately-dubious scheme using the automounter that unmounts the USB flash partition when not in use, and brings in up into 'auto' power mode and remounts automagically it on demand, and in the place where I poll from input data from my k8055 card I ensure the k8055 card is put (back) into 'auto' mode which lets it save power, and, unless we have bags of extra juice in the battery, explicitly suspends the USB drive if it's not mounted. (I do that there because the k8055 code wakes up all the USB devices a bit like lsusb is reputed to.) There's some locking in there to minimise the chance of messing up the filesystem by a race causing the flash drive to be suspended while a new mount is starting.http://www.earth.org.uk/note-on-SheevaPlug-setup.html#USB-power
3) I'm in discussions with Alan Stern (da man for Linux USB) and unfortunately this may be the best that can be done, but on the other hand I'm going to see if I can think of a better and more general scheme that can go back into the kernel in the distant future, since my mucking about is definitely unsafe, even if I am the only one using the server and can be very careful about what happens on it.
The upshot is I'm reasonably safe and using 2.5W again most of the time unless the battery is bursting with energy that would otherwise be wasted...