Good Answer Tim, but I am going to add a bit.
Since there are varying services, Tim's recommendation of domain.com/us and domain.com/uk is spot on. If you don't want to change URLs, I understand. You can keep the current URLs, you can geo-target the root to the UK and /us to the US. This route is easier to scale and if you grow each country as it launches, the domain gets stronger which helps each expansion in the years to come.
Now, if you are geo-targeting, there won't be much need for hreflang. If there are some product pages that are IDENTICAL across the two countries other than a few changed words, you can add HREFLANG. Technically speaking you wouldn't need it if the content were written and the pages crafted to each country, but until you get to that point, you can use HREFLANG for the pages that are duplicated. Mind you, this isn't best for your audience, but I get that for starters, that's easier. Do test the pages in each market to see if any modifications can be made for each market.
I don't recommend launching a .co.uk unless your customers/market demand it. That's a lot of marketing work to build up each one.
It sounds like your best bet is / geotarget to GB using Search Console, create a /us for the US, claim that in Search Console and geotarget to the US. Then use hreflang for any duplicated content.
Hope that helps!