Not going to comment on some of the musicality elements of this thread but thought I'd pipe in with a workaround I found with Rekordbox. As others have stated, it's a little frustrating that Rekordbox doesn't write the BPM info to the tag like it does the key. You can access these BPM values from a Rekordbox library (File --> Export Collection in XML). Note this is not a flat file but you can parse this information in a database tool or similar. Probably the easiest way is to use Power Query in Excel to and transforming this information till you get to the level that has track info, full path and BPM. Once you get this, you can easily manipulate to just extract a full filepath and BPM (and any other attributes you want). Save this as a CSV or TXT file
A number of Tag tools will allow you to import tags from a Text File (Tagscanner, MP3tag), even Additional Tagging & Reporting Tools in Musicbee has functionality for this. But most lack a reliable preview tool. If you're applying this to a large library, I would be very careful, so a preview is important. Given that, I found
MP3tag to be the most effective. Navigate to folder with all the music files in it and then I would export a CSV from this tool to get familiar with how the data looks. From there, match filepaths from the export to your edited rekordbox libary CSV and use
this page to help with syntax. Go to Convert --> Text File - Tag and then change to the appropriate format string and delimiters of your CSV
(perhaps using this page as a guide). Now click preview and see if everything looks like it should, perhaps even testing with a smaller list first. Once you're happy press ok and you're done.
Hope this helps others as it took me a while to find a solution that aligned with Rekordbox (understand there are other third party tools as mentioned in the thread).