This will be my first time there in a LONG LONG time (more than 20 years) - I'm old - ha.
I have seen Portafino rated as one of the top hotels in Orlando on several sites. It looks awesome. We got a great deal - $336 for a bay view. However the prices fluctuate all the time. I would suggest calling the hotel directly, ask about any discounts etc they have (AAA, or whatever). Also the longer you stay the cheaper each night is. Additionally be flexible a bit. We were going to do Unvieral at the end of our trip, but by moving it to the beginning I was able to save $100 a night. I would then look out on Hotels.com, Trivago, etc to see if there are any other discounts. I have actually rebooked my stay there 2 times. I call and see if the rates have gone done. They did twice. I was in a garden view room and for $2 more a night - I got a bay view just by checking and calling back - worth the $2 I think
The Royal seems very nice too and we almost stayed there. However the rooms at portafino are bigger and as our kids are getting older - a little more room is nice. We were also in Italy last year so a "revisit" to it was very appealing. The Hardrock didn't hold any appeal to myself or my wife - but people love it.
I would certainly stay at the higher end hotels - especially if you want the express pass. I was MUCH MUCH cheaper to stay at Portafino and get the pass than even staying at a motel 6 and buying the passes.
Sign up for Lowes loyalty program. I have done that with other hotel chains and even as a "low" user of the hotel chain have been upgraded simply because I was a loyalty member.
Hope this helps