Break packet reading into states to reduce object churn.