My company is in the process of rewriting an existing application from scratch. This application, among other tasks, performs complex SQL queries against order and invoice data
NHibernate has a bit of a learning curve, but it is well worth learning as any time spent will pay off many times over. I would recommend NHibernate in Action book for learning as it is an excellent resource and covers everything your question asks and a whole lot more.
NHibernate performance can be tuned (see links below) and NHibernate has robust caching mechanism.
http://www.codeproject.com/KB/database/NHibernate_Perf.aspx https://www.hibernate.org/hib_docs/nhibernate/html/performance.html
Ultimately the performance will be determined by who writes the queries as it is in SQL.