La serializzazione degli oggetti utilizza un "protocollo" ben preciso, che prevede un piccolo header di 4 byte iniziali per "marcare" lo stream per la serializzazione.
In sostanza è sbagliato "appendere" oggetti sullo stesso stream con un nuovo ObjectOutputStream.
Le enum sono serializzabili ma il trattamento è più particolare. Con altre classi, quando deserializzi ottieni un nuovo oggetto. Con le enum no, perché il concetto è quello di avere un numero fisso e preciso di istanze, che sono poi le costanti della enum.
Non è che stai aspettando il dato al momento sbagliato?