Hi Alex,
If you use universal persistence, the persistence record would be stored locally and couldn't be synch'd to an LTM outside of a redundant pair. So cookie insert persistence makes for a nice simple way to handle this assuming (as Michael pointed out) the hostnames the client accesses are all on the same domain and you manually set the domain on the persistence cookie. The pool names would need to be the same across the units (or you could manually set the persistence cookie name in the cookie insert persistence profile).
LB::reselect forces a new load balancing selection. Using the pool or node command would be more efficient. The pool command would give you pool stats whereas the node command wouldn't. If you're manually selecting the pool or node, you would probably want to check that the server is marked up using LB::status. Or you could wait for a failure and add logic to the LB_FAILED event to re-load balance the request.
You can manually configure cookie insert persistence in an iRule using the persist command:
http://devcentral.f5.com/wiki/default.aspx/iRules/persist
Here are a few other related wiki pages:
http://devcentral.f5.com/wiki/default.aspx/iRules/lb__status
http://devcentral.f5.com/wiki/default.aspx/iRules/pool
http://devcentral.f5.com/wiki/default.aspx/iRules/node
Aaron