Is this a good communication scheme?
That doesn't hide Bob's identity from eavesdroppers.

(The OP mentioned in chat that the OP isn't trying to do that.)

I can no longer spot any other problems with the key exchange part.

The encryption/decryption of application level data is vulnerable to arbitrary replays

and reflection and dropping. ​ The public MAC input should indicate direction and

message_number and [number of messages received]. ​ There should be a separate way

for it to securely indicate those three things without sending any application-level message, and a way for it to close_notify with a secure indication of those three things.