I've discovered one weakness:
Apache::Session is currently hardcoded to only use the table "sessions". I don't want a different database for each survey, so that's an issue. I'm currently exploring if there is any reason why this table name shouldn't be user-configurable.