Check how many nodes you are indexing per cron run. If the number is high, it will definitely take more time to process.
On the other hand, the search cron shouldn't take that long if there are no nodes to index. You can always check the number of not indexed nodes at search settings (admin/config/search/settings). If the number is 0 and search cron still takes that long, you might be having some problems or something else is causing the issue.
Take a look at Elysia cron for fine tuning when, how often and what is executed.
And regarding your last question - as far as I remember SOLR is doing that in the background - so yes, the search index update will be quicker.
[EDIT]
Thinking about this - it might have to do with the number of fields (because it invokes node_load on every node) and on the length of the body field.