The OpenTracing project's Medium blog explains distributed tracing, and covers the merger of OpenTracing and OpenCensus into OpenTelemetry.
Commenters link it as a good introduction to distributed tracing, including a HotROD tutorial, and for its post arguing for event-based tracing.
I think you are right and data model should have been event based rather than span based. https://medium.com/opentracing/open-for-event-based-tracing-a326c295f2a2 digs into that topic and basically says that distributed tracing is about causality & partial ordering which bring us back to the 70's with Lamport's logical clocks and all following work.
However, this design "flaw" is well known and seems assumed. I'm not able to find relevant GitHub issues right now, but I remember this topic being discussed on OpenTracing or OpenTelemetry bug tracker and the outcome was something like "Spans might not be the best data model, but people are now used to it and we have to ship the spec within a reasonable time, so let's stick to it".
Edit: https://github.com/open-telemetry/opentelemetry-specification/issues/20 might be relevant to your concerns.
Look at OpenTracing. This is the merger of two tracing initiatives and will provide the pointers to both commercial and open source solutions. [1] There is some excellent capabilities to instrument an existing java app through the jvm [2] with OpenTracing.
[1]: https://opentracing.io/
[2]: https://medium.com/opentracing/opentracing-on-kubernetes-get-yer-tracing-for-free-7a69cca03c8a
For a little more context, this post explains what can OpenTracing do for you.
https://medium.com/opentracing/distributed-tracing-in-10-minutes-51b378ee40f1
This is a fantastic introduction.
https://medium.com/opentracing/take-opentracing-for-a-hotrod-ride-f6e3141f7941?source=linkShare-63b30e0190ff-1514826557