It would be quite simple to use your second method and just create a VS per needed port.
(All VS will have the same IP)
VS1 port80
VS2 port 8080
VS3 port 445
Yes, it is very possible to do an "ALL Ports" but making it overly complicated is exactly that... complicated. But that is in my opinion and Im sure it works in other environments. I work in an environment where there are multiple people making adds, moves, and changes to the VS and I dont want to get those phone calls saying... "Huh?" Now, I have used the iRule method but the VS had a need for over 40+ ports to be opened and that is where I was using the iRule.