How do I remove excess video duration in ffmpeg when using lavfi?
You are feeding 21 seconds of audio from the video file and then applying adelay=3000|3000, hence 24 seconds. Add atrim=end=21 at the end to both your audio filterchains.

And

Add shortest=1 to both your overlays.