Best way to rank all the columns in a table and store those ranks in another table
You would need an index on each column in order to avoid a sort of every row and column during the ranking process.  That would of course introduce significant overhead as scores are updated continuously.  Probably not an option unless you have a high-end hardware configuration.

The ranking processes could be offloaded onto a read-only copy maintained via log shipping on a different box.  That would avoid concurrency issues with hitting the live database system of record and provide more server resources for both the intensive batch process and live database.  If you are running Enterprise Edition, you could use a database snapshot on the same box as the source if your hardware is sufficiently sized.

You mention truncate and insert.  Just want to mention that you could also use SWITCH such that you truncate and insert into a staging table.  Once the staging load is completed, truncate Table_Ranks and then SWITCH from the staging table into Table_Ranks in a single transaction.  That way, Table_Ranks would never be empty.