ok, a little update. ive never used php before (im a java and oracle programmer during the day) but it seems fairly nice.
i've hacked a little something together - basically i changed the search results page to look for an 'albumname' property. if its set, the name is displayed instead of '[i]Search[/i]', and the 'total results for blah' bit is omitted.
the next steps are:
1) at the bottom of the normal search results page (ie no albumname property) have a link to 'save this search as a dynamic album'. this will write the url-encoded version of the search string to a new table (zp_dynalbums) along with a name and optional description.
2) at the bottom of the dynalbum version of the search results page, have an 'edit this dynamic album' link, for admins.
3) get the dynamic albums to show up on the main gallery page, alongside the 'normal' albums.
if anyone wants to see my (very rough) working copy, its here: http://gallery.mungler.com/index.php?p=search&words=%28outdoor%26%21scotland%29%7Cbird&albumname=hellomum
as i say, im totally new to php and im obviously just hacking this together for my own purposes. if anyone wants to take what im doing and add it properly, i'm even happier

cheers
EDIT: added an 'omitalbums' to the search results:
http://gallery.mungler.com/index.php?p=search&words=architecture&omitalbums=1&albumname=stuffblah - this stops it showing the 'architecture' album as a search result.
EDIT2: well, im giving up for the night. im starting to get my head around how zenphoto is put together. i think the next step is to create a class DynamicAlbum as a subclass of PersistentObject, and set about saving the search criteria to the db. I noticed that my changes to the search results page result in some odd behaviour in the breadcrumb links if you click on an image in the 'dynamic album'.
ultimately, one of three things will happen:
1) one of the proper zenphoto devs will pick this up and implement it properly, life will be good, etc
2) i fail to convince the devs its a good idea, so end up hacking something together just for my own use/amusement, which may or may not work.
3) i fail to convince the devs, fail to get it to work either through inability or (more likely) lack of time and motivation, and end up using the symlinks instead.
i'd prefer options 1, then 2, with 3 only as a last resort