When working alone you really can't win in a fixed-price + fixed-time project. You have no ability to increase capacity apart from working late nights and weekends.
In my experience "loose requirements" based estimates only become larger and larger when you add detail, never smaller. Keep asking for details until you feel safe.
Discussions about high level requirements and what's included and what's not are easily won when push comes to shove, client is usually drawing the short end of the stick here. Your business relationship may suffer though.
Sad thing about this construct is that everything you build tends to be the lowest possible quality needed to satisfy the high level requirements.
(yeah so you can logon with a password, you never said you wanted a separate logon for each user...)
With fixed-price I would just waterfall, big-design-upfront, the thing. Have the contractor sign based on a full detail stack of papers, then build.
To improve your estimates you could just double or triple whatever you think you need, this might be more realistic but may price you out of the market.
Scrum's velocity tracking may prove to be useful to get a grip on your own estimates and how they pan out compared to actual time needed.
Unless you want to speculate on the fixed-price looking for a healthy profit I would really prefer to just get payed by the hour. This keeps risk at the contractors side.
Estimates are a guess not a promise.