Shuffler: fix shuffle for 2 tracks when repeat is enabled (bgo#671221)

Use last_track.LastPlayed datetime value instead of last_random,
because it would avoid a glitch about the way the current logic
resets the RandomByTrack mode.

We can explain this glitch by explaining here the hypothetical
sequence of events of 2 tracks being played, whose duration is
exactly 1 minute each:

0:00 play track1 manually
--
0:58 requestnexttrack fired, lastplayedstamp of track1 updated to 0:58
0:59 query to find a random track from a set which have lastplayedstamp < 0:00 , found track2
0:59 chosen track2, set last_random to 0:59
1:00 track2 begins to play, lastplayedstamp of track1 updated to 1:00
--
1:58 requestnexttrack fired, lastplayedstamp of track2 updated to 1:58
1:59 query to find a random track from a set which have lastplayedstamp < 0:00 , found nothing
1:59 query to find a random track from a set which have lastplayedstamp < 0:59 (last_random) , found nothing

This glitch makes the Repeat-All mode not work when the source to
play has 2 tracks, as you just have seen. If we add a 3rd track to
the mix, the random mode is sub-optimal, but at least the Repeat-All
mode works, and here would be the sequence of events:

0:00 play track1 manually
--
0:58 requestnexttrack fired, lastplayedstamp of track1 updated to 0:58
0:59 query to find a random track from a set which have lastplayedstamp < 0:00 , found track2 & track3
0:59 chosen track2, set last_random to 0:59
1:00 track2 begins to play, lastplayedstamp of track1 updated to 1:00
--
1:58 requestnexttrack fired, lastplayedstamp of track2 updated to 1:58
1:59 query to find a random track from a set which have lastplayedstamp < 0:00 , found track3
1:59 chosen track3, set last_random to 1:59
2:00 track3 begins to play, lastplayedstamp of track2 updated to 2:00
--
2:58 requestnexttrack fired, lastplayedstamp of track3 updated to 2:58
2:59 query to find a random track from a set which have lastplayedstamp < 0:00, found nothing
2:59 query to find a random track from a set which have lastplayedstamp < 1:59 (last_random) , found track1
2:59 chosen track1 , set last_random to 2:59
3:00 track1 begins to play, lastplayedstamp of track3 updated to 3:00
...


Partial fix for bgo#671221 (when there are 2 tracks to play)
Shuffler: fix shuffle for 1 track when repeat is enabled (bgo#671221)

Retry a third time when GetRandomTrack() returns null for a second
time. It can happen, because the first retry still tries to reset
the random mode but discarding the last track, to avoid duplicate
playbacks.

Fixes last part of bgo#671221 (when there is 1 track to play)