An emergency switch yes, but a full control is not good.
An example of emergency switch that doesn't allow the admins to steal the users funds and reduce hacking damages:
1. You have an emergency function that freeze everything: deposits, withdrawals, interests, etc... It give times to the admins to find the issue.
2. If the issue can't be fixed for some reasons, the 2nd emergency function auto-transfer every single funds to an other already specified dApp address.
3. On that "emergency" dApp address, a simple script allow the users to redeem their funds with the tokens they got by lending, providing liquitidy, etc.... Nobody else can withdraw, including the admin team.
Want to see how look such script ?
I took 5min to write it. It's an incomplete script, it's only to show how easy that can be done.
# Function to freeze
@Callable(i)
func emergencyFreeze(enable: Boolean) = {
if(this != i.caller) then {
throw("Access denied")
} else {
[BooleanEntry("freeze", enable)]
}
}
# Place it on each callable function. If frozen just reject the request
func isFrozen() = {
match getBoolean(this, "freeze") {
case a: Boolean => a
case _ => false
}
}
# Emergency transfer function
@Callable(i)
func emergencyTransfer() = {
if(this != i.caller) then {
throw("Access denied")
} else {
let receivingAddr = "AddrThatIsAlreadyKnown"
[ScriptTransfer(...)]
}
}
A little effort in scripting could prevent:
- Admins to run away with the funds
- Stops an ongoing hack.
- Allow user to redeem remaining funds.
- Prevent $5 wrench attacks (if the attacker get the admins private key, he only have to power to freeze and auto transfer, but not the power to withdraw the funds for self)
Don't trust. Verify.

You are perfectly right, It would be nice if somebody from the team could answer those really legit concerns about the code.
Perhaps you could also write an issue into the github code. It might be that some of the developers would be more sensitive to that point.