1. A request and its signed response can only be used for a specific login attempt by SSH design.
2. The app, through some nasty hacks, receive the host auth blob from the server to verify. If you skip this, the request will be labelled as from "unknown" to "warn" the user. Such request are never auto-accepted during "accept for 1h" periods.
3. The app has an internal known hosts list, so it denies attempts to just replicate hostname to trick the user.
4. The app has to be paired with each machine that can authenticate, or the key material must be stolen off a paired machine. "Timed" acceptance is per pairing basis, so abuse of that only works if you steal the right pairing. The app shows the name of the pairing when requesting approval.
If you want to trick the user to accept your request by firing it simultaneously with a legitimate one, you first have to steal pairing data from the machine the user is logging in from. Then, you'd either have to auth against the very same host as the user, or have the request say that the host is unknown (sticks out, seeing that the legitimate request is also there). There would also be two requests in a row, which might warn the user.
The other attack vector I can think of would be trying to accept a random request done by an attacker, either by tricking the user (clickjacking-style) or by using an exploit on the device.
A yubikey-like device with a screen displaying request information and a hardware approval method would be better than an arbitrary android device, but I would argue that the model presented by this piece of software isn't as bad as you make it sound.