Cloudflare’s IPs are anycast: The same IP is located in hundreds of different places in the world, depends on where you’re connecting from.
Even if Google checks through which actual path the traffic takes place and uses that to know where it is located, it will still show up as US if they make the crawling from the US (which I suspect they do?)
If Google assumes a site is for certain audience based on the IP address of the hosting company, and “punishes” a site as “not local” for that, then it sounds like the system is totally broken, and as such, produces bad results for everyone. If you were to say that they take note of the domain, and assume that .uk is for a UK site, I would say fine, that makes sense.
The only way to solve this “issue”, if it is indeed an actual issue, is for Cloudflare to have IPs registered in the UK (despite the fact that Google traffic will still reach to a US edge…), and have UK customers placed on that IP range. I am unaware of them having such service, and if I would be them, I wouldn’t make such service; It doesn’t make much sense IMHO, it has great financial cost from operational point of view (obtaining local IPs everywhere, management of many more BGP announcements, etc), for a benefit that is probably nothing more than a rumor, which the SEO world is full of (well, they have to make money from people somehow, no?)
If you don’t take my words for it, maybe take Google’s employee’s words: https://productforums.google.com/forum/#!topic/webmasters/k6po9mnpI8c/discussion ?