So you say Kinesis is bad for message streams where each message should be handled by only one machine? Well duh, that's how it works. Kinesis is meant for every listener to be assured to get the entire stream. It was never designed for that, and I expect you'll have a bad time if you try to use it that way. SQS is obviously what you want if you're interested in guarantees that each message is handled once and only once.
One Lambda per route in a decently-sized restful webapp is ugly and unmanageable? Well duh. Don't do that. Do pretty much anything else instead. Seriously, anything else at all.
This sounds more like, if you want to deploy services on AWS, do either pay somebody who knows what they're doing, or spend some time checking out the services to make sure they are designed for what you want. Don't just pick a random AWS service and usage pattern from a Google search and start building around it without ever checking if it matches what you're trying to do.