debug statements consume memory and cpu resources and thus skew performance measurements
Yes, even if you turn off the trace flags, it still has to serialize the parameters, which takes precious CPU time. If you need to get values from your execution at a certain point, use a Checkpoint for debugging. Your Apex Code trace flag must be at least FINER to generate checkpoint logs.
developer console in profiling perspective shows just events that were logged
The Timeline does, but if you press Ctrl/Cmd+P (or Debug > View Log Panels), you can alter your Perspective to include the Stack Tree and Execution Stack panels, which show you the nested function calls (including SOQL, SOSL, DML). You'll get much more valuable information that way.
debug log size is severely limited
In Summer '18, the log size was increased from 2MB to 5MB. 5MB is actually reasonably hard to hit. In fact, the limit was chosen because over 99% of all logs generated don't reach that size (e.g. the salesforce.com engineers took time to figure out a fine balance between system resources and usefulness). If you're still having problems, though, try setting the non-essential trace flags to a lower level. For example, when profiling, you usually only need Profiling to be at FINEST, and you can turn off everything else; you'll get a log that's a few KB at most but tells you exactly where your bottlenecks are.
database inserts are not necessarily immediate
True, but you can account for them. The Profiler includes the amount of time each DML operation takes, as well as queries. You can easily identify any problem database operations with this information.
Try changing your perspective to use the Stack Tree and Execution Stack panels, as they're incredibly useful. Also remember the raw log will have all profiling information at the very end, so you don't need to fumble around to find them. Finally, when profiling, I find it most practical to turn off all other trace flags so that only Profiling is set. This will give you the most realistic expectation of execution time in production. Use the other trace flag logging levels when you're debugging, and get used to Checkpoints, because they will greatly simplify the work you do.