The normal approach is to segment your flight so that you know your burn for different phases of the flight. For example, cruise after a long flight, may be at a reduced power setting, because the aircraft is lighter (having burned much of it's fuel).
Then one adds up the fuel for each segment, including reserve, to get the total load.
Manually, iterative refinement can be done to optimize things.
For the flying I do, there is no push to drop the fuel load down, so we can pick a point, and with one run at he fuel (manually when not using an aircraft with FMS or electronic aids (tablet), we can verify if the initial guess is close, and decide to use that load.
However, friends who fly for airlines say that the ops people are always cutting their fuel tight, especially when there is weather which could cause diversions. They will ask for a few more pounds "for the wife and kids." Then again, a fuel diversion can be expensive.
Another point, normally one selects cruise altitude for WX conditions, traffic, and flight duration. In other words, normally the available fuel does not drive altitude. Altitude is driven by flight conditions, routing, economy, etc.
So in summary, segment your flight, and use climb and descent burn rates and rates for your weight, power (or TAS) and altitude, to get an initial "proposal" and then iteratively refine if necessary. Obviously add reserves and a flight condition based reserve. If you will be picking your way through some weather you will want a reserve for that.