Sort:  

I accessed the Steem API, using the steem-python library: http://steem.readthedocs.io/en/latest/

  1. Collect all account names with lookup_accounts, 1000 at a time (this is what the get_all_usernames call does internally.)
  2. Batch the account names and use get_accounts to pull in balance information, 100 at a time.
  3. Run analysis offline

Step #1 was fast, step #2 took 30-60 minutes (maybe less? I walked the dog in the middle of it.)

The next step will involve walking the blocks from the blockchain in a time range, to get all transactions and rewards during that period. Or accessing individual account histories, though that is probably less efficient. So that will probably be more expensive.