Your idea is great, I was also planning to add a timer for blocks but not enough time.
Keeping the snake from going through its body is an algorithmic problem to keep it from making smart moves so it doesn't get stuck and I still haven't solved it :<
Thanks for your opinion.