I just started with NHibernate (using SQLite) in my current project and I mostly used Query<>, because I was familiar writing db queries in Linq.
About your QueryOver version, I would have written :
int result = Session.QueryOver()
.Select(Projections.Max(x => x.CustomNumber))
.SingleOrDefault();
It seems quite readable, and the resulting SQL would be something like :
SELECT max(this_.CustomNumber) as y0_ FROM "BillingDataEntity" this_
Hope this will help