I can imagine implementing this via a load balancer
Systemd can do that. so could xinetd, if you're really oldskool.
Wouldn't the connection possibly timeout while the container is starting?
That depends on the application. But typically, what happens is that the launching supervisor (e.g., systemd) accepts the TCP connection, starts the service (in which way ever) and passes in the connected socket as file descriptor (of course, that doesn't work with VMs).
If your application times out quickly if after connection establishment nothing is replied within a few milliseconds, yes, that would happen.
Is there some projects already covering this?
As said, systemd on any modern Linux server or desktop system does that already. Here's a relatively in-depth discussion of how that works. You're looking at what Poettering considers the "Type 2", so do read that article and the one linked from there; even if you don't end up using systemd but some other socket activation manager, that is good to have read to understand what you're up against.
With modern version of container engines (most importantly podman and related), you can start a systemd manager within in a container, so that you get a "managed" version of systemd for this particular purpose as well.
Note that starting containers (pods) is a pretty typical thing for systemd units to do; for example, podman even has functionality to generate systemd unit files for existing containers, so that you can directly do something like "OK, to provide this and that service, this container systemd unit needs to be started, and in its dependencies, it starts all other pods/containers it needs".