So, I just found this buried in F5 documentation:
These variables have no prefix - for example, a variable named foo. Local variables are scoped to the connection, and are deleted when the connection is cleared. In most cases, this is the most appropriate variable type to use.
Apparently iRules are scoped to the connection, which in theory sounds like they can be shared by irules for the same connection. So, this looks like I can add 2 irules to the same VIP, one with the variables in the irule_init, and have that one higher in priority than the irule that has all of the event logic. Can anyone confirm this will work? I may need to do some experimentation.