Why do you think that the implementation of 2 services is an excess, exactly? Unless you have problems scaling up to n Tomcat instances, adding another service for load balancing is an acceptable solution in my book. By running this service on at least 2 copies, this service meets the requirements of the Azure SLA: your uptime is as good as on Azure, and you avoid SPoF (the only point of failure).
You can go with a product like terracotta, but it's pretty simple to write a simple socket server to redirect HTTP sessions to a specific instance running on Windows Azure. You would need to know about node recyles, but that is perfectly doable.
Keep in mind that memcached requires another Azure service (web roles), the appFabric caching service does not (but also has associated costs). I donโt know Tomcat, but for IIS you can easily change the session state from memory to permanent (either SQL Azure or Azure Storage). Something you need to know about: For sites with large volumes, the transaction cost for Azure Storage can actually become a cost driver for your deployment if you store session information there. SQL Azure may be a more economical solution, but on the other hand, a turnkey solution for your solution may not be supported.
source share