If I understand it correctly (I didn’t fully review all the code) I think a small modification to Design Pattern: Gate Keeper would make layer 1 a little more generic and simpler. The example in the DP has a fixed time between commands but the Python version lets you pass in a different time with each command. It would be a simple matter to add the time to delay before the next command to make it variable to the Rules DSL version.
This would eliminate needing to maintain that switch statement and vp_task in your first Rules.
You should look at 3 different methods to use scenes with Google Home & openHAB for some alternative ways to approach your second layer which might make it a little more generic and maintainable. If you move to Scripted Automation, Design Pattern: Using Item Metadata as an Alternative to Several DPs can come into play which can let you define the scenes and Group membership to define the scenes instead of hard coding them into Rules. See openhab-helper-libraries/Community/Mode (Time of Day)/automation at master · openhab-scripters/openhab-helper-libraries · GitHub for an implementation similar to this implemented using Item metadata.
I think you would find that most of us would vehemently assert that something like this should absolutely not be implemented as a binding.
Independent of the comments above, you might look to see if there is anything you can apply from Design Pattern: How to Structure a Rule which might give you some simplification ideas for your second sets of Rules.
Thanks for posting!