How to change an operator's icon from a timer event
The correct way to add a property to a class in blender is by using bpy.props, in your situation that doesn't help as adding bpy.props doesn't work with panels.

The solution would be to add your is_playing property to the scene and use that for your operator icon choice.

def play_panel_draw(context, layout):
    scn = context.scene
    row = layout.row()
    row.operator("scene.play", text="", icon='PLAY' if not scn.is_playing else 'PAUSE')


Here is a sample addon to demonstrate.